获取标准报表CJI3的ALV数据

本文介绍如何使用SAP ABAP编程语言通过标准程序CJI3获取和处理ALV表格数据。具体展示了如何定义数据类型、设置过滤条件、调用程序并获取返回的数据。适用于希望了解SAP ALV数据处理流程的开发人员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、CJI3

运行标准程序CJI3,获取对象和业务货币值,在其他程序中展示

 

2、代码展示

CJI3对应程序名rkpep003,最终展示的ALV结构可以再程序中找到。

因为本实例只获取其中两个字段的值,也可以直接在ALV点F1获取字段名称

TYPES:BEGIN OF ty_alv,
        objid  TYPE kaep_coac-objid,"编辑的格式中的对象
        wtgbtr TYPE kaep_coac-wtgbtr,"交易货币中的总值
      END OF ty_alv.

DATA ls_cji3 TYPE REF TO data.

DATA:lt_alv TYPE TABLE OF ty_alv,
     ls_alv TYPE ty_alv.

FIELD-SYMBOLS:<fs_cji3> TYPE ANY TABLE.

RANGES:r_pspid FOR proj-pspid,
        r_budat FOR cobk-budat.

r_pspid-sign = 'I'.
r_pspid-option = 'EQ'.
r_pspid-low = 'YA-2201004'.
APPEND r_pspid.

r_budat-sign = 'I'.
r_budat-option = 'EQ'.
r_budat-low = '20221101'.
r_budat-high = '20221130'.
APPEND r_budat.

"运行时不显示,只获取ALV数据
cl_salv_bs_runtime_info=>set( display = abap_false
                              metadata = abap_false
                              data  = abap_true ).

"调用CJI3
SUBMIT rkpep003
WITH cn_projn IN r_pspid
WITH r_budat IN r_budat
WITH koagr = '40'
AND RETURN.

TRY .
    cl_salv_bs_runtime_info=>get_data_ref("获取数据
      IMPORTING r_data = ls_cji3 ).

    ASSIGN ls_cji3->* TO <fs_cji3>.

    MOVE-CORRESPONDING <fs_cji3> TO lt_alv.

  CATCH  cx_salv_bs_sc_runtime_info.
    MESSAGE '无法获取ALV数据' TYPE  'E'.
ENDTRY.

cl_salv_bs_runtime_info=>clear_all( ).

运行结果

定期更文,欢迎关注

要统计`cji.dat`文件中每个学生的总成绩,并将原有数据和计算出的总分数存放在新的文件`stud.dat`中,可以编写一个简单的程序来实现。以下是一个使用Python编写的示例代码: ```python import os # 读取cji.dat文件 def read_cji_file(file_path): if not os.path.exists(file_path): print(f"文件 {file_path} 不存在") return [] with open(file_path, &#39;r&#39;, encoding=&#39;utf-8&#39;) as file: lines = file.readlines() students = [] for line in lines: parts = line.strip().split(&#39;,&#39;) if len(parts) < 2: continue # 跳过格式不正确的行 student_id = parts[0] scores = list(map(float, parts[1:])) students.append((student_id, scores)) return students # 写入stud.dat文件 def write_stud_file(file_path, students): with open(file_path, &#39;w&#39;, encoding=&#39;utf-8&#39;) as file: for student_id, scores in students: total_score = sum(scores) file.write(f"{student_id},{&#39;,&#39;.join(map(str, scores))},{total_score}\n") # 主程序 cji_file_path = &#39;cji.dat&#39; stud_file_path = &#39;stud.dat&#39; students = read_cji_file(cji_file_path) write_stud_file(stud_file_path, students) print(f"统计完成,总成绩已保存到 {stud_file_path}") ``` 这个程序的工作流程如下: 1. 读取`cji.dat`文件,解析每个学生的ID和成绩。 2. 计算每个学生的总成绩。 3. 将学生ID、各科成绩和总成绩写入`stud.dat`文件。 请确保`cji.dat`文件存在,并且格式正确(每行包含一个学生ID和多个成绩,用逗号分隔)。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值