1.获取随机的唯一标识 (有可能系统版本较低,没有class if_system_uuid,可以使用2的方法)
DATA: ldf_system_uuidTYPE REF TO if_system_uuid,
ldf_uuid TYPE sysuuid_c32.
ldf_system_uuid = cl_uuid_factory=>create_system_uuid( ).
TRY.
ldf_uuid = ldf_system_uuid->create_uuid_c32( ).
e_uuid = ldf_uuid.
CATCH cx_uuid_error.
ENDTRY.
IF i_LOG IS NOT INITIAL.
"取得唯一的标识
"如果唯一标识为空
IF i_LOG-ZuidIS INITIAL .
i_LOG-Zuid =ldf_uuid.
e_uuid = ldf_uuid.
ENDIF.
MODIFY ZGR_ZZ_51_FT_001 FROM i_LOG.
IF sy-subrcEQ 0.
e_result = 'S'.
ELSE.
e_result = 'E'.
ENDIF.
ENDIF.
2. 首先使用snro 产生一个number range。然后在代码中使用。
CALLFUNCTION 'NUMBER_RANGE_ENQUEUE'
EXPORTING
OBJECT ='ZLC_001' "Ceate with SNUM
EXCEPTIONS
FOREIGN_LOCK =1
OBJECT_NOT_FOUND= 2
SYSTEM_FAILURE =3
OTHERS =4.
CALLFUNCTION 'NUMBER_GET_NEXT'
EXPORTING
NR_RANGE_NR ='00'
OBJECT ='ZLC_001'
IMPORTING
NUMBER =W_MATNR
EXCEPTIONS
INTERVAL_NOT_FOUND =1
NUMBER_RANGE_NOT_INTERN = 2
OBJECT_NOT_FOUND =3
QUANTITY_IS_0 =4
QUANTITY_IS_NOT_1 =5
INTERNAL_OVERFLOW =6
OTHERS =7.
CALLFUNCTION 'NUMBER_RANGE_DEQUEUE'
EXPORTING
OBJECT= 'ZLC_001'.
IFSY-SUBRC <> 0.
MESSAGEID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITHSY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.