当前位置: 首页 > news >正文

最近顾问问了两次有没有批量更新XXX的程序,突然来了灵感

之前封装过一个更新订单的函数,正好按照这个函数做批导:CRM函数CRM_ORDER_MAINTAIN封装 - ^ω^SAP傻X^o^ - 博客园

设想的就是excel导入的第一行是函数对应结构的字段名,然后根据字段名把后面各行数据用指针对到对应的结构字段中。(item没写,因为麻烦)

随便写写的初版,后面看看能不能用上,如果有其他的需求看看要不要改改。。。

REPORT zcrm_order_update_fc.
"根据ZCRM_ORDER_MAINTAIN_BK的参数名称,对应批导第一行字段匹配到对应的结构中
"第一列固定订单号,方便确定订单的相关信息,其他信息位置不限
"因为需要解析第一行内容,需要批导的时候就明确总列数,方便按数量去对应
"没用行项目信息,如果需要可以先将抬头和项目数据都存内表,然后按抬头内表循环处理DATA:gt_head  TYPE TABLE OF zcrm_maintain_h,gw_head  LIKE LINE OF gt_head,gt_headx TYPE TABLE OF zcrm_maintain_hx,gw_headx LIKE LINE OF gt_headx,gt_item  TYPE TABLE OF zcrm_maintain_i,lt_item  TYPE TABLE OF zcrm_maintain_i,gw_item  LIKE LINE OF gt_item,gt_itemx TYPE TABLE OF zcrm_maintain_ix,gw_itemx LIKE LINE OF gt_itemx.PARAMETERS: p_file LIKE rlgrap-filename OBLIGATORY.
PARAMETERS: p_col TYPE i OBLIGATORY."excel导入的列数量,为后面计算字段名做准备
PARAMETERS: p_line TYPE i OBLIGATORY."excel导入的行数量,为了excel函数更准确*$*$********************************************************************
*$*$    AT SELECTION-SCREEN                                            *
*$*$********************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.CALL FUNCTION 'WS_FILENAME_GET'             "GET FILE NAMEEXPORTING
*     DEF_FILENAME     = ' '
*     DEF_PATH         = ' 'mask             = ',*.* ,*.*.'mode             = '0'title            = text-h10IMPORTINGfilename         = p_file
*     RC               =EXCEPTIONSinv_winsys       = 1no_batch         = 2selection_cancel = 3selection_error  = 4OTHERS           = 5.IF sy-subrc <> 0.
*            MESSAGE E016 WITH P_PATH.ENDIF.
************************************************************************
* START-OF-SELECTION                                                   *
************************************************************************
START-OF-SELECTION.PERFORM frm_upload_data.PERFORM frm_process_data.*&---------------------------------------------------------------------*
*&      Form  FRM_UPLOAD_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_upload_data .DATA:lt_tab TYPE TABLE OF zalsmex_tabline,ls_tab TYPE zalsmex_tabline,wt_tab TYPE TABLE OF zalsmex_tabline,ws_tab TYPE zalsmex_tabline,v_msg  TYPE string,v_typ  TYPE string.DATA:p_start TYPE i.FIELD-SYMBOLS:<fs>  TYPE any,<fsx> TYPE any.CALL FUNCTION 'ZEXCEL_UPLOAD'EXPORTINGfilename                = p_filei_begin_col             = '1'i_begin_row             = '1'i_end_col               = p_coli_end_row               = p_lineTABLESintern                  = lt_tabEXCEPTIONSinconsistent_parameters = 1upload_ole              = 2OTHERS                  = 3.IF sy-subrc <> 0.
* Implement suitable error handling hereENDIF."固定列名内表LOOP AT lt_tab INTO ls_tab FROM 1 TO p_col.APPEND ls_tab TO wt_tab.ENDLOOP.p_start = p_col + 1.LOOP AT lt_tab INTO ls_tab FROM p_start."循环excel表格AT NEW row."新行开始,清空函数参数CLEAR:gw_head,gw_headx.ENDAT.READ TABLE wt_tab INTO ws_tab WITH KEY col = ls_tab-col."读取字段名称对应的列IF sy-subrc = 0.ASSIGN COMPONENT ws_tab-value OF STRUCTURE gw_head TO <fs>."将对应字段指定到结构IF sy-subrc = 0 AND ls_tab-value IS NOT INITIAL.<fs> = ls_tab-value."将excel值给对应结构字段ENDIF.ASSIGN COMPONENT ws_tab-value OF STRUCTURE gw_headx TO <fsx>."将对应字段指定到结构IF sy-subrc = 0 AND ls_tab-value IS NOT INITIAL.<fsx> = 'X'."将字段更新标记XENDIF.ENDIF.AT END OF row."行结束,调用函数更新CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'EXPORTINGinput  = gw_head-object_idIMPORTINGoutput = gw_head-object_id.SELECT SINGLE guid sales_org process_type INTO (gw_head-guid,gw_head-sales_org,gw_head-order_type) FROM zhsb_order_index WHERE object_id = gw_head-object_id.CALL FUNCTION 'ZCRM_ORDER_MAINTAIN_BK'EXPORTINGhead       = gw_headheadx      = gw_headxIMPORTINGerror_type = v_typerror_log  = v_msg
*         OBJECT_O   =
*         TABLES
*         ITEM       =
*         ITEMX      =
*         PARTNER    =
*         PARTNERX   =
*         PRICE      =
*         PRICEX     =
*         TEXT       =
        .ENDAT.ENDLOOP.ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_PROCESS_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_process_data .ENDFORM.

 

http://www.gsyq.cn/news/870.html

相关文章:

  • 2025.9.9 树套树 + 分治 刷题日记
  • Rocky9和Ubuntu使用pip安装python的库mysqlclient失败解决方式
  • MySQL SQL优化
  • JMESPath由浅入深完全入门教程(自用)
  • 我的2025新版泛目录站群探索之旅:智能化SEO的新世界 - 蚂蚁站群
  • 高效管理多站点的秘密武器:站群管理软件实战分享 - 蚂蚁站群
  • 基于 Dify on DMS 快速构建客服对话数据质检服务,完成任务可领取积分、定制手办等好礼!
  • PCTA/PCTP学习笔记-TiDB 数据库核心原理与架构
  • 镜像站群CMS使用手记 - 蚂蚁站群
  • 多站点管理:批量站群建站软 - 蚂蚁站群
  • Aivilization Ai小镇体验
  • JH-ViewInspector - Android 控件ID/控件详情获取工具
  • 2024-2025学年第二学期教务处助教工作总结
  • CSRF
  • 【日记】拜托,丝之歌不开挂真的能打得过吗(975 字)
  • 2025天津大学预推免机试题解
  • 数据挖掘与隐私:你真的匿名了吗?
  • 饮酒其五
  • 简单的sql注入方法
  • socket重定义错误
  • 实用的软件
  • 使用-Jest-测试-VueJS-组件-全-
  • 基于C#实现照片条形码识别
  • 虚拟内存不足怎么解决?虚拟内存不足的原因及解决方法
  • Tekla门钢边柱节点源码
  • 由于裁剪的图片较小
  • 周总结报告6
  • ubuntu22.04安装cuda11.8+python3.12+pytorch2.6.0
  • 自己改造的一个ES的Reindex开源工具
  • CF1379