【ABAP学习笔记】Excel上传卡控

    "补贴名称 重复项检查
    CLEAR:lt_ztmm0601,gs_ztmm0601,wa_ztmm0601.
    LOOP AT gt_ztmm0601 INTO gs_ztmm0601.
      wa_ztmm0601-zsubsidycode = gs_ztmm0601-zsubsidycode.
      wa_ztmm0601-zsubsidyname = gs_ztmm0601-zsubsidyname.
      COLLECT wa_ztmm0601 INTO lt_ztmm0601 .
    ENDLOOP.

    CLEAR:gs_ztmm0601,wa_ztmm0601.
    LOOP AT lt_ztmm0601 INTO gs_ztmm0601.
      IF wa_ztmm0601-zsubsidycode <> gs_ztmm0601-zsubsidycode.
        wa_ztmm0601-zitemnum = 0.
        wa_ztmm0601-zsubsidycode = gs_ztmm0601-zsubsidycode.
      ENDIF.
      wa_ztmm0601-zitemnum = wa_ztmm0601-zitemnum + 1.
      gs_ztmm0601-zitemnum = wa_ztmm0601-zitemnum.
      MODIFY lt_ztmm0601 FROM gs_ztmm0601  TRANSPORTING zitemnum.
    ENDLOOP.

    DELETE lt_ztmm0601 WHERE zitemnum = 1.

    IF lt_ztmm0601 IS NOT INITIAL.
      CLEAR:gs_ztmm0601,wa_ztmm0601.
      LOOP AT gt_ztmm0601 INTO gs_ztmm0601.
        READ TABLE lt_ztmm0601 INTO wa_ztmm0601 WITH KEY zsubsidycode = gs_ztmm0601-zsubsidycode.
        IF sy-subrc = 0 .
          gs_ztmm0601-status = icon_led_red.
          gs_ztmm0601-message = gs_ztmm0601-message && '补贴名称:必须唯一!'.
          MODIFY gt_ztmm0601 FROM gs_ztmm0601  TRANSPORTING status message.
        ENDIF.
      ENDLOOP.
    ENDIF.
在 SAP 中,使用 LEFT JOIN 连接表时,如果一个字段是6位长度的NUM,另一个字段是5位长度的NUM,你可以使用以下方法进行连接:

使用 SUBSTRING 函数截取字段的一部分进行连接。例如,你可以截取6位长度的NUM字段的前5位,与5位长度的NUM字段进行连接。示例如下:


SELECT *
FROM table1
LEFT JOIN table2 ON SUBSTRING(table1.NUM, 1, 5) = table2.NUM
这样,你可以将6位长度的NUM字段与5位长度的NUM字段进行连接。

使用 CAST 函数将其中一个字段转换为相同的数据类型,然后进行连接。示例如下:


SELECT *
FROM table1
LEFT JOIN table2 ON CAST(table1.NUM AS NVARCHAR(5)) = table2.NUM
这里使用 CAST 函数将6位长度的NUM字段转换为5位长度的 NVARCHAR 类型,然后与5位长度的NUM字段进行连接。

通过以上方法,你可以在 LEFT JOIN 连接表时处理不同长度的字段。
     ( CASE ekpo~netpr WHEN INITIAL THEN vbap~NETPR else ekpo~netpr END ) AS netpr, ""凭证中的净价(以凭证货币计)
     ( CASE ekpo~peinh WHEN INITIAL THEN vbap~KPEIN else ekpo~peinh END ) AS kpein, ""价格单位
"更改状态栏显示进度条

DATA: g_perc TYPE p.
DATA: g_stxt TYPE string.
DATA: g_sperc(3) TYPE c.
 
PARAMETERS: p_times TYPE i DEFAULT  5.
 
g_perc = 0.
DO p_times TIMES.
  WAIT UP TO 1 SECONDS.
  CLEAR:g_stxt.
  g_perc = sy-index / p_times * 100.
  g_sperc = g_perc.
  CONCATENATE '已经完成了'  g_sperc '%' INTO g_stxt.
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      percentage = g_perc     "百分比的数值,用来控制秒表的指针。
      text       = g_stxt.    "状态栏显示的文本。
 
ENDDO.

      IF gs_ztmm0604-kunnr_odn IS NOT INITIAL AND ( gs_ztmm0604-zportcode_odn IS NOT INITIAL OR gs_ztmm0604-zzvbeln_odn IS NOT INITIAL
        OR gs_ztmm0604-zportcode_idn IS NOT INITIAL OR gs_ztmm0604-matnr_idn IS NOT INITIAL ).
        gs_ztmm0604-status = icon_led_red.
        gs_ztmm0604-message = gs_ztmm0604-message && '出口剔除客户代码:该值维护时,其他值不可维护!' .
      ELSEIF gs_ztmm0604-zportcode_odn IS NOT INITIAL .
        IF gs_ztmm0604-zportcode_idn IS NOT INITIAL OR gs_ztmm0604-matnr_idn  IS NOT INITIAL.
          gs_ztmm0604-status = icon_led_red.
          gs_ztmm0604-message = gs_ztmm0604-message && '出口保留的口岸代码:该值维护时,只允许维护出口保留的报关单号!' .
        ELSEIF gs_ztmm0604-zzvbeln_odn IS INITIAL.
          gs_ztmm0604-status = icon_led_red.
          gs_ztmm0604-message = gs_ztmm0604-message && '出口保留的口岸代码:该值维护时,必须维护出口保留的报关单号!' .
        ENDIF.
      ELSEIF gs_ztmm0604-zzvbeln_odn IS NOT INITIAL .
        gs_ztmm0604-status = icon_led_red.
        gs_ztmm0604-message = gs_ztmm0604-message && '出口保留的报关单号:该值维护时,必须维护出口保留的口岸代码!' .
      ELSEIF gs_ztmm0604-zportcode_idn IS NOT INITIAL AND gs_ztmm0604-matnr_idn IS INITIAL .
        gs_ztmm0604-status = icon_led_red.
        gs_ztmm0604-message = gs_ztmm0604-message && '进口保留的口岸代码:该值维护时,必须维护进口保留的物料编号!' .
      ELSEIF gs_ztmm0604-matnr_idn IS NOT INITIAL AND gs_ztmm0604-zportcode_idn IS INITIAL.
        gs_ztmm0604-status = icon_led_red.
        gs_ztmm0604-message = gs_ztmm0604-message && '进口保留的物料编号:该值维护时,必须维护进口保留的口岸代码!' .
      ELSEIF gs_ztmm0604-kunnr_odn IS INITIAL AND  gs_ztmm0604-zportcode_odn IS INITIAL AND  gs_ztmm0604-zzvbeln_odn IS INITIAL
            AND gs_ztmm0604-zportcode_idn IS INITIAL AND gs_ztmm0604-matnr_idn  IS INITIAL.
        gs_ztmm0604-status = icon_led_red.
        gs_ztmm0604-message = gs_ztmm0604-message && '值不能为空!' .
      ENDIF.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值