1. 关于权限检查
用在at selection-screen之后
工厂权限检查对象:M_MATE_WRK
一般格式:
AUTHORITY-CHECK OBJECT 'F_KNA1_BUK'
ID 'BUKRS' FIELD p_bukrs.
IF sy-subrc <> 0.
MESSAGE e068(zfi) WITH p_bukrs.
STOP.
ENDIF.
2. 关于屏幕只能选中一行的程序
自动生成程序有问题
FIELD XXX-mark
MODULE citab2_mark ON REQUEST.
只要mark有改变即会进入MODULE,选另外一行时有两次循环
分别为选中的一行,和之前选中的一行
解决方法:避免进入之前选中一行的循环
3. 关于ALV中导出XLS的问题
当一行的总长度超过1024时,XLS将分两行显示
只要有一行超过,所有的行都分两行显示
4. 借/贷 S/H +/-
SHKZG
5. SNRO 删除号码范围
必需把号码当前值置为零才能删除或者修改
6. 内表当前行 != 维护界面当前行
内表当前行 = 维护界面当前行 + 维护界面-top_line - 1
7. 自建界面搜索帮助
*---ADD BY DEV19---*
PROCESS ON VALUE-REQUEST.
FIELD t_mm504-lifnr MODULE help_lifnr.
*---END BY DEV19---*
MODULE help_lifnr INPUT.
DATA: BEGIN OF h_tab OCCURS 0,
werks LIKE t001w-werks,
matnr LIKE mara-matnr,
ekorg LIKE eine-ekorg,
lifnr LIKE lfa1-lifnr,
name1 LIKE lfa1-name1,
END OF h_tab.
DATA: l_repid LIKE sy-repid,
l_dynnr LIKE sy-dynnr.
l_repid = sy-repid.
l_dynnr = sy-dynnr.
GET CURSOR LINE lin.
p_lin = tc_mm504-top_line + lin - 1.
READ TABLE t_mm504 INDEX p_lin.
CLEAR h_tab.
REFRESH h_tab.
*---取标准信息记录---*
CLEAR h_tab.
SELECT
ewerk
matnr
eiorg
lifnr
name1
INTO (h_tab-werks,
h_tab-matnr,
h_tab-ekorg,
h_tab-lifnr,
h_tab-name1)
FROM zm_kredm
WHERE ewerk = p_werks
AND matnr = t_mm504-matnr.
APPEND h_tab.
CLEAR h_tab.
ENDSELECT.
*---取自建信息记录---*
CLEAR h_tab.
SELECT
a~werks
a~matnr
a~ekorg
a~lifnr
b~name1
INTO (h_tab-werks,
h_tab-matnr,
h_tab-ekorg,
h_tab-lifnr,
h_tab-name1)
FROM zmm_bj18 AS a
INNER JOIN lfa1 AS b ON b~lifnr = a~lifnr
WHERE a~werks = p_werks
AND a~matnr = t_mm504-matnr
AND a~zflag = 'Y'.
APPEND h_tab.
CLEAR h_tab.
ENDSELECT.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'LIFNR'
dynpprog = l_repid
dynpnr = l_dynnr
dynprofield = 'T_MM504-LIFNR'
value_org = 'S'
TABLES
value_tab = h_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
ENDMODULE. " help_lifnr INPUT
8. 修改或者新建自建表时,把所有的数据元素和域都重新激活一遍
如果要参考某个数据元素,最好用系统表字段,如要用自建表字段,务必确定此表已经传输
9. 关于负号前移
第一種:
PERFORM change_qty USING l_srqty CHANGING it_inv-srqty.
FORM change_qty USING p_qty CHANGING p_qty1.
p_qty1 = p_qty.
SHIFT p_qty1 LEFT DELETING LEADING ' '.
SHIFT p_qty1 UP TO '-' LEFT CIRCULAR.
CONDENSE p_qty1 NO-GAPS.
ENDFORM. " change_qty
第二種:
目的:将字符串尾的负号放在字符串首
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
value = itab-amunt.
第一种适合write
第二种适合alv