"补贴名称 重复项检查
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.