在网上和书上就是找不到多少RFC的实例,现在将这个实例公开给大家,希望能给大家带来启发!
================= FUNCTION MODULE (或RFC中) SY-SUBRC 的含义 ================
使用SELECT语句选择查询:
SY-SUBRC = 0: 至少有一行数据,当ENDSELECT语句执行完,SY-DBCNT中保存着记录的个数。
SY-SUBRC = 4: 没有数据。
SY-SUBRC = 8: 只有使用“SELECT SINGLE FOR UPDATE”时才会有,
表示: WHERE条件指定的记录不止一行,结果是没有记录被选中。
使用INSERT语句,向表中插入一行,必须注意INSERT的顺序与表中字段的顺序一致:
SY-SUBRC = 0: 插入成功,SY-DBCNT包含了插入的行数,0或1。
SY-SUBRC = 4: 由于有相同的KEY存在,所以插入失败。
使用LOOP语句来遍历一个内表:
SY-SUBRC = 0: 循环至少被执行一次。
SY-SUBRC = 4: 循环没有被执行,可能是没有数据,也可能是没有符合条件的记录。
使用DELETE语句来删除一条记录:
SY-SUBRC = 0: 找到一行并删除之,如果该表有不唯一主键,也就是有多条重复的记录,则只删除第一条记录。
SY-SUBRC = 4: 没有找到符合条件的记录,也没有删除。
使用UPDATE语句来更新一条记录:
SY-SUBRC = 0: 找到记录并更新,(如果有多条记录呢?)
SY-SUBRC = 4: 没有找到符合条件的记录,也没有更新。
+++++++++++++++++++++++ 实例RFC ++++++++++++++++++++++++++++++++++++++++++++++
*建立临时表ZTEST1,字段为:
* ZUSERID CHAR 20
* ZPASSWD CHAR 20
*-------------------------------------------------
FUNCTION ZRFC_01.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(ACTION) TYPE /1SAP1/CL_ACH0001 传入参数ACTION,表示CREATE、EDIT、DELETE记录
*" VALUE(WHEREUSERID) TYPE /GC1/DTE_MSG_TXT 传入参数WHEREUSERID,按照USERID来查找关键字
*" EXPORTING
*" VALUE(RETURN) TYPE /AIN/ACT_PUB_PARAMNAME 传出参数RETURN,返回是否成功,空串表示成功,非空串表示未成功
*" VALUE(ERRNUM) TYPE /AIN/ACTIVITY_COUNTER 传出参数ERRNUM,返回错误代码
*" TABLES
*" ZTEMPTABLE STRUCTURE ZTEST1 传入、传出表,以表为参数
*"----------------------------------------------------------------------
TABLES:ZTEST1.
DATA:
WA_ZTEMPTABLE LIKE ZTEMPTABLE,
TRANSACTION_ID LIKE ARFCTID,
V_VAILD(1) TYPE C.
V_VAILD = 'X'.
* OPEN A DATA TRANSACTION
CALL FUNCTION 'TRANSACTION_BEGIN'
IMPORTING
TRANSACTION_ID = TRANSACTION_ID.
CASE ACTION .
*按照关键字ZUSERID查询
WHEN 'QUERY'.
SELECT * FROM ZTEST1 INTO TABLE ZTEMPTABLE where ZUSERID = WHEREUSERID.
IF SY-SUBRC = 0.
ELSE.
V_VAILD = ''.
ERRNUM = SY-SUBRC.
ENDIF.
*选择所有的记录
WHEN 'SELECTALL'.
SELECT * FROM ZTEST1 INTO TABLE ZTEMPTABLE.
IF SY-SUBRC = 0.
ELSE.
V_VAILD = ''.
ERRNUM = SY-SUBRC.
ENDIF.
*插入记录
WHEN 'CREATE'.
LOOP AT ZTEMPTABLE INTO WA_ZTEMPTABLE.
INSERT ZTEST1 FROM WA_ZTEMPTABLE.
IF SY-SUBRC = 0.
ELSE.
V_VAILD = ''.
ERRNUM = SY-SUBRC.
ENDIF.
ENDLOOP.
*修改记录
WHEN 'EDIT'.
LOOP AT ZTEMPTABLE INTO WA_ZTEMPTABLE.
UPDATE ZTEST1 FROM WA_ZTEMPTABLE.
IF SY-SUBRC = 0.
ELSE.
V_VAILD = ''.
ERRNUM = SY-SUBRC.
ENDIF.
ENDLOOP.
*删除记录
WHEN 'DELETE'.
LOOP AT ZTEMPTABLE INTO WA_ZTEMPTABLE.
DELETE ZTEST1 FROM WA_ZTEMPTABLE.
IF SY-SUBRC = 0.
ELSE.
V_VAILD = ''.
ERRNUM = SY-SUBRC.
ENDIF.
ENDLOOP.
WHEN OTHERS.
ENDCASE.
*如果V_VALID为X,则表示成功,否则表示失败,并返回RETURN错误代码
IF V_VAILD = 'X'.
CALL FUNCTION 'TRANSACTION_END'
EXPORTING
TRANSACTION_ID = TRANSACTION_ID.
RETURN = ''.
ELSE.
CALL FUNCTION 'TRANSACTION_ABORT'
EXPORTING
TRANSACTION_ID = TRANSACTION_ID.
RETURN = 'THE CURRENT ACTION IS FAILURE!'.
ENDIF.
ENDFUNCTION.
分享到:
相关推荐
SY-SUBRC = 0: 至少有一行数据,当ENDSELECT语句执行完,SY-DBCNT中保存着记录的个数。 SY-SUBRC = 4: 没有数据。 SY-SUBRC = 8: 只有使用“SELECT SINGLE FOR UPDATE”时才会有, 表示: WHERE条件指定的记录不止...
### SAP ABAP SY字段含义详解 #### SY-DYNNR:当前动态编号 在SAP ABAP编程中,`SY-DYNNR`是系统变量之一,它存储了当前屏幕的动态编号。这个编号通常用于识别不同的屏幕或窗口,以便进行特定的操作或处理。例如,...
WRITE: / 'SY-SUBRC:', SY-SUBRC, / 'System Message:', MESS. ENDIF. ``` 如果SAP系统运行在UNIX环境下且“hugo.xyz”文件不存在,则上述示例将输出错误代码和系统消息。 #### 打开文件以读取 要打开文件以供...
IF sy-subrc = 0. MESSAGE i101 WITH 'Delete success.'. ENDIF. ENDIF. ``` 在这个例子中,通过检查`p_del`参数是否为`X`来判断是否执行删除操作。如果是,则会调用`DELETE FROM`语句来清空指定表的所有记录。...
进入SE38,输入程序名"LSKEYF00",点击修改按钮(不是显示按钮),用上述方法在任何遇到断点处修改SY-SUBRC = 0。 第七步:修改程序"LSKEYF00"。在步骤6后,你就可以修改程序"LSKEYF00"了,找到“CALL 'GET_...
* SY-SUBRC:系统执行传回值,0 表示成功 * SY-UNAME:用户 * SY-DATUM:系统日期 * SY-UZEIT:系统时间 * SY-TCODE:当前执行程序的 Transaction code * SY-INDEX:当前 LOOP 循环过的次数 * SY-TABIX:当前处理的...
在字段中搜索中的字符串,如果成功,则将SY-SUBRC的返回代码值设置为0并将SY-FDPOS设置为字段中的该字符串的偏移量,否则将SY-SUBRC设置为4。搜索串可为以下格式之一:目的搜索(任何字符顺序,忽略尾部空格)。....
`SY-SUBRC`和`SY-FDPOS`记录搜索结果。 理解并熟练掌握这些字符串处理方法对于编写高效的ABAP代码至关重要,它们在数据处理、文本分析和用户界面交互等场景中都有广泛应用。在实际编程中,可以根据需求灵活运用这些...
4. **插入可执行代码**:为了永久性地绕过权限检查,可以在断点处插入代码,比如`sy-subrc = 0`,使得每次执行到此处时,权限检查都会自动通过。完成修改后,保存并激活程序。 请注意,这些步骤展示了如何在SAP环境...
- `SY-SUBRC`:执行语句后的返回值,0表示成功,其他值表示不同类型的错误。 - `SY-DATUM`:记录当前服务器的日期。 - `SY-UZEIT`:获取当前服务器时间。 - `SY-ULINE`:生成255个字符长度的水平线。 - `SY-...
IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. WRITE: date1, ' - ', date2, ' = ', years. " 输出结果为:20070207 - 当前日期 =...
4. **处理结果**:根据`sy-subrc`变量的值处理权限检查结果。`sy-subrc=0`表示权限检查通过,否则失败。 5. **角色分配**:在PFCG(Profile Generation)事务码中,为用户角色分配相应的权限对象和字段值,以授予或...
- `SY-SUBRC`:返回最近一次执行的状态,0表示成功,非0表示有错误。 - `SY-UNAME`:当前用户的用户名,用于权限检查或用户相关记录。 - `SY-UZEIT`:当前时间,用于记录或比较时间戳。 - `SY-TCODE`:当前事务...
- SY-SUBRC:表示指令执行成功与否,'0'代表成功。 - SY-UNAME:当前用户的用户名。 - SY-DATUM:当前系统日期。 - SY-UZEIT:当前系统时间。 - SY-TCODE:当前执行的事务代码。 - SY-INDEX:循环计数。 - SY-TABIX...
WRITE: / 'X', SY-SUBRC UNDER 'SY-SUBRC', " 在STRING3中查找X SY-FDPOS UNDER 'SY-FDPOS'. ``` 通过以上分析,我们可以看到文章不仅详细地介绍了如何使用ABAP编写99乘法表,还介绍了ABAP中的一些实用功能,...
- SY-SUBRC:系统返回码,0表示成功。 - SY-UNAME:当前登录用户的用户名。 - SY-DATUM:系统日期。 - SY-UZEIT:系统时间。 - SY-TCODE:当前执行的事务代码。 - SY-INDEX:循环计数。 - SY-TABIX:内部表当前行号...
- SY-SUBRC:执行操作后的返回码,'0'表示成功。 - SY-UNAME:当前用户登录的用户名。 - SY-DATUM:当前系统日期。 - SY-UZEIT:当前系统时间。 - SY-TCODE:当前执行的事务代码。 - SY-INDEX:循环中的当前迭代次数...
6. SY-SUBRC:执行状态为 0,表示成功 7. SY-UNAME:用户名 8. SY-UZEIT:当前时间 9. SY-TCODE:当前的事务代码 10. SY-LSIND:列表索引页 11. SY-LISTI:上一个列表的索引 12. SY-LILLI:绝对列表中选定行的行号 ...
6. **sy-subrc**:返回最近执行的函数模块或语句的子程序返回代码。0表示成功,非零值表示错误,这在错误处理和调试中非常有用。 7. **sy-datum**和**sy-uzeit**:分别提供当前日期和时间,这些信息可用于记录日志...