*
***INCLUDE LZSY_D_ZDGZF01.
*
CONSTANTS:
GCF_DEL_FLAG TYPE CHAR1 VALUE 'M', " Delete Flag
GCF_INS TYPE CHAR1 VALUE 'N', " Insert Date
GCF_UPD TYPE CHAR1 VALUE 'U', " Update Date
GCF_STATUS_ADD TYPE CHAR1 VALUE 'A', " Create Status
GCF_STATUS_COPY TYPE CHAR1 VALUE 'C', " Copy Status
GCF_STATUS_CHANGE TYPE CHAR1 VALUE 'U', " Change Status
GCF_STATUS_DISPLAY TYPE CHAR1 VALUE 'S', " Display Status
GCF_ACTVT TYPE CHAR2 VALUE '01'. " Activity '01'
*&
*& Form FRM_BEFORE_SAVE
*&
*& text
*&
*&
*& <
*&
FORM frm_before_save .
DATA: LV_LENGTH TYPE I.
DATA: LV_ACTION TYPE C.
DATA: LV_TSTAMP TYPE TIMESTAMP.
DATA:LT_ZSY_D_ZDGZ_OLD TYPE TABLE OF ZSY_D_ZDGZ,
LS_ZSY_D_ZDGZ_OLD LIKE LINE OF LT_ZSY_D_ZDGZ_OLD,
LT_ZSY_D_ZDGZ_NEW TYPE TABLE OF ZSY_D_ZDGZ,
LS_ZSY_D_ZDGZ_NEW LIKE LINE OF LT_ZSY_D_ZDGZ_NEW.
FIELD-SYMBOLS: <FS_VALUE> .
FIELD-SYMBOLS: <FS_TOTAL> .
FIELD-SYMBOLS: <FS_EXTRACT>.
LOOP AT TOTAL ASSIGNING <FS_TOTAL>.
CLEAR: LV_LENGTH.
LV_LENGTH = STRLEN( <FS_TOTAL> ) - 1.
ASSIGN <FS_TOTAL>+LV_LENGTH(1) TO <FS_VALUE>.
IF SY-SUBRC = 0.
LV_ACTION = <FS_VALUE>.
* 简短格式的时间戳:
CONVERT DATE SY-DATUM
TIME SY-UZEIT
INTO TIME STAMP LV_TSTAMP "时戳
TIME ZONE SY-ZONLO.
* If It's New Records
IF LV_ACTION = GCF_INS.
* Set Field Value
LV_LENGTH = LV_LENGTH - 6.
ASSIGN <FS_TOTAL>+LV_LENGTH(6) TO <FS_VALUE>.
IF SY-SUBRC = 0.
<FS_VALUE> = SY-UZEIT.
ENDIF.
LV_LENGTH = LV_LENGTH - 8.
ASSIGN <FS_TOTAL>+LV_LENGTH(8) TO <FS_VALUE>.
IF SY-SUBRC = 0.
<FS_VALUE> = SY-DATUM.
ENDIF.
LV_LENGTH = LV_LENGTH - 12.
ASSIGN <FS_TOTAL>+LV_LENGTH(12) TO <FS_VALUE>.
IF SY-SUBRC = 0.
<FS_VALUE> = SY-UNAME.
ENDIF.
* If It's Update Records
ELSEIF LV_ACTION = GCF_UPD.
* Set Field Value
LV_LENGTH = LV_LENGTH - 6.
ASSIGN <FS_TOTAL>+LV_LENGTH(6) TO <FS_VALUE>.
IF SY-SUBRC = 0.
<FS_VALUE> = SY-UZEIT.
ENDIF.
LV_LENGTH = LV_LENGTH - 8.
ASSIGN <FS_TOTAL>+LV_LENGTH(8) TO <FS_VALUE>.
IF SY-SUBRC = 0.
<FS_VALUE> = SY-DATUM.
ENDIF.
LV_LENGTH = LV_LENGTH - 12.
ASSIGN <FS_TOTAL>+LV_LENGTH(12) TO <FS_VALUE>.
IF SY-SUBRC = 0.
<FS_VALUE> = SY-UNAME.
ENDIF.
ENDIF.
ENDIF.
CLEAR:LS_ZSY_D_ZDGZ_OLD.
LS_ZSY_D_ZDGZ_OLD = <FS_TOTAL>.
APPEND LS_ZSY_D_ZDGZ_OLD TO LT_ZSY_D_ZDGZ_OLD.
ENDLOOP.
LOOP AT EXTRACT ASSIGNING <FS_EXTRACT>.
CLEAR: LV_LENGTH.
LV_LENGTH = STRLEN( <FS_EXTRACT> ) - 1.
ASSIGN <FS_EXTRACT>+LV_LENGTH(1) TO <FS_VALUE>.
IF SY-SUBRC = 0.
LV_ACTION = <FS_VALUE>.
"简短格式的时间戳:
CONVERT DATE SY-DATUM
TIME SY-UZEIT
INTO TIME STAMP LV_TSTAMP "时戳
TIME ZONE SY-ZONLO.
* If It's New Records
IF LV_ACTION = GCF_INS.
* Set Field Value
LV_LENGTH = LV_LENGTH - 6.
ASSIGN <FS_EXTRACT>+LV_LENGTH(6) TO <FS_VALUE>.
IF SY-SUBRC = 0.
<FS_VALUE> = SY-UZEIT.
ENDIF.
LV_LENGTH = LV_LENGTH - 8.
ASSIGN <FS_EXTRACT>+LV_LENGTH(8) TO <FS_VALUE>.
IF SY-SUBRC = 0.
<FS_VALUE> = SY-DATUM.
ENDIF.
LV_LENGTH = LV_LENGTH - 12.
ASSIGN <FS_EXTRACT>+LV_LENGTH(12) TO <FS_VALUE>.
IF SY-SUBRC = 0.
<FS_VALUE> = SY-UNAME.
ENDIF.
* If It's Update Records
ELSEIF <FS_VALUE> = GCF_UPD.
* Set Field Value
LV_LENGTH = LV_LENGTH - 6.
ASSIGN <FS_EXTRACT>+LV_LENGTH(6) TO <FS_VALUE>.
IF SY-SUBRC = 0.
<FS_VALUE> = SY-UZEIT.
ENDIF.
LV_LENGTH = LV_LENGTH - 8.
ASSIGN <FS_EXTRACT>+LV_LENGTH(8) TO <FS_VALUE>.
IF SY-SUBRC = 0.
<FS_VALUE> = SY-DATUM.
ENDIF.
LV_LENGTH = LV_LENGTH - 12.
ASSIGN <FS_EXTRACT>+LV_LENGTH(12) TO <FS_VALUE>.
IF SY-SUBRC = 0.
<FS_VALUE> = SY-UNAME.
ENDIF.
ENDIF.
ENDIF.
CLEAR:LS_ZSY_D_ZDGZ_NEW.
LS_ZSY_D_ZDGZ_NEW = <FS_EXTRACT>.
APPEND LS_ZSY_D_ZDGZ_NEW TO LT_ZSY_D_ZDGZ_NEW.
ENDLOOP.
DELETE LT_ZSY_D_ZDGZ_OLD WHERE YAER IS INITIAL AND PAY IS INITIAL.
DELETE LT_ZSY_D_ZDGZ_NEW WHERE YAER IS INITIAL AND PAY IS INITIAL.
ENDFORM.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架