循环浏览多个HR表并写入逗号分隔的文件

2020-09-10 08:35发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,我是abap开发的新手,需要一些帮助编写我的程序。

要求:为每个由PERNR(员工ID)驱动的员工创建一个逗号分隔的字段

每条记录需要包含4个表中的以下字段(以及我已经拥有的一些硬编码值):

PA0001- pernr,werks,btrtl,orgeh,bukrs,kostl,计划

PA0105- usrid,usrid_long

PA0002-沃纳,纳赫恩

LFB1- lifnr(供应商ID)

PERNR是所有4张桌子的钥匙

到目前为止,以下是我的代码:到目前为止,任何人都可以建议这是否正确

表:
pa0001,
pa0105,
pa0002。

数据:w_werks类似于pa0001-werks。 " PersonnelArea
数据:w_pernr类似于pa0001-pernr。" VendorID
数据:w_btrtl类似于pa0001-btrtl。 " SubArea
数据:w_orgeh像pa0001-orgeh。" OrgUnit
数据:w_usrid象pa0105-usrid。 " USerID
数据:w_usridl像pa0105-usrid_long。"电子邮件地址/登录ID
数据:w_vorna象pa0002-vorna。 " EmployeeFirstName
数据:w_nachn类似于pa0002-nachn。" EmployeeLastName
数据:w_bukrs类似于pa0001-bukrs。 " CompanyCode
数据:w_kostl类似于pa0001-kostl。" CostCenter
数据:w_mgrpos象pa0001-plans。 "位置
数据:首席类型persno。"首席/经理ID
数据:批准者TYPE字符串。 "批准人,是Y还是N
数据:employee_file类型rlgrap文件名。
数据:w_pos类似于sy-fdpos。
数据:w_pos2类似于sy-fdpos。
数据:类似于日期的sy-data。
字段符号:键入任何表。


*向文件名添加时间戳和实体ID并写入目录
CONCATENATE'\\ Test \ employee_test_'sy-datum sy-uzeit'.txt'放入employee_file。


类型:
t_pernr的开始,
pernr类型pa0001-pernr,
werks类型pa0001-werks,
btrtl 型号pa0001-btrtl,
orgeh型号pa0001-orgeh,
bukrs型号pa0001-bukrs,
kostl型号pa0001-kostl,
vorna型号pa0002-vorna,
nachn型号pa0002-nachn,
usrid TYPE pa0105-usrid,
usrid_long TYPE pa0105-usrid_long,
计划TYPE pa0001-plans,
主TYPE persno,
批准者,
t_pernr的结尾。
< br>数据:带有标题行的t_pernr的i_employee类型表。

*数据:w_employee TYPE t_pernr的类型。

*通过PERNR将所有表连接在一起,并用作提取必要字段的键。 LECT pa0001〜pernr pa0001〜werks pa0002〜vorna pa0002〜nachn pa0001〜btrtl pa0001〜orgeh pa0001〜bukrs pa0001〜kostl
pa0105〜usrid pa0105〜usrid_long pa0001〜plans
进入表i_employee
的对应字段 pa0001内部联接pa0002 ON pa0001〜pernr = pa0002〜pernr内部联接pa0105 ON pa0001〜pernr = pa0105〜pernr。


*将记录写入导入文件
打开数据集employee_file以文本模式输出

*在内部表中循环并添加硬编码值
在i_employee中循环进入w_employee。
CONCATENATE'305'
w_employee-vorna
w_employee-nachn
w_employee- pernr
w_employee-usrid
'欢迎'
w_employee-usrid_long
'en_US'
'US'
'SAP'
'USD' br>'SAP'
w_employee-bukrs
'CC'
w_employee-kostl
w_employee-werks
w_employee-btrtl
w_employee-orgeh
w_employee-chief
w_employee-approver
INTO w_employee
用','分隔。

将w_employee转移到employee_file。
END 循环。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,我是abap开发的新手,需要一些帮助编写我的程序。

要求:为每个由PERNR(员工ID)驱动的员工创建一个逗号分隔的字段

每条记录需要包含4个表中的以下字段(以及我已经拥有的一些硬编码值):

PA0001- pernr,werks,btrtl,orgeh,bukrs,kostl,计划

PA0105- usrid,usrid_long

PA0002-沃纳,纳赫恩

LFB1- lifnr(供应商ID)

PERNR是所有4张桌子的钥匙

到目前为止,以下是我的代码:到目前为止,任何人都可以建议这是否正确

表:
pa0001,
pa0105,
pa0002。

数据:w_werks类似于pa0001-werks。 " PersonnelArea
数据:w_pernr类似于pa0001-pernr。" VendorID
数据:w_btrtl类似于pa0001-btrtl。 " SubArea
数据:w_orgeh像pa0001-orgeh。" OrgUnit
数据:w_usrid象pa0105-usrid。 " USerID
数据:w_usridl像pa0105-usrid_long。"电子邮件地址/登录ID
数据:w_vorna象pa0002-vorna。 " EmployeeFirstName
数据:w_nachn类似于pa0002-nachn。" EmployeeLastName
数据:w_bukrs类似于pa0001-bukrs。 " CompanyCode
数据:w_kostl类似于pa0001-kostl。" CostCenter
数据:w_mgrpos象pa0001-plans。 "位置
数据:首席类型persno。"首席/经理ID
数据:批准者TYPE字符串。 "批准人,是Y还是N
数据:employee_file类型rlgrap文件名。
数据:w_pos类似于sy-fdpos。
数据:w_pos2类似于sy-fdpos。
数据:类似于日期的sy-data。
字段符号:键入任何表。


*向文件名添加时间戳和实体ID并写入目录
CONCATENATE'\\ Test \ employee_test_'sy-datum sy-uzeit'.txt'放入employee_file。


类型:
t_pernr的开始,
pernr类型pa0001-pernr,
werks类型pa0001-werks,
btrtl 型号pa0001-btrtl,
orgeh型号pa0001-orgeh,
bukrs型号pa0001-bukrs,
kostl型号pa0001-kostl,
vorna型号pa0002-vorna,
nachn型号pa0002-nachn,
usrid TYPE pa0105-usrid,
usrid_long TYPE pa0105-usrid_long,
计划TYPE pa0001-plans,
主TYPE persno,
批准者,
t_pernr的结尾。
< br>数据:带有标题行的t_pernr的i_employee类型表。

*数据:w_employee TYPE t_pernr的类型。

*通过PERNR将所有表连接在一起,并用作提取必要字段的键。 LECT pa0001〜pernr pa0001〜werks pa0002〜vorna pa0002〜nachn pa0001〜btrtl pa0001〜orgeh pa0001〜bukrs pa0001〜kostl
pa0105〜usrid pa0105〜usrid_long pa0001〜plans
进入表i_employee
的对应字段 pa0001内部联接pa0002 ON pa0001〜pernr = pa0002〜pernr内部联接pa0105 ON pa0001〜pernr = pa0105〜pernr。


*将记录写入导入文件
打开数据集employee_file以文本模式输出

*在内部表中循环并添加硬编码值
在i_employee中循环进入w_employee。
CONCATENATE'305'
w_employee-vorna
w_employee-nachn
w_employee- pernr
w_employee-usrid
'欢迎'
w_employee-usrid_long
'en_US'
'US'
'SAP'
'USD' br>'SAP'
w_employee-bukrs
'CC'
w_employee-kostl
w_employee-werks
w_employee-btrtl
w_employee-orgeh
w_employee-chief
w_employee-approver
INTO w_employee
用','分隔。

将w_employee转移到employee_file。
END 循环。

付费偷看设置
发送
6条回答
me_for_i
1楼-- · 2020-09-10 09:24

您应在传输所有数据后关闭数据集。 还有一件事是您选择应该重新处理,没有条件会遇到性能问题

愤怒的猪头君
2楼-- · 2020-09-10 09:07

pa0105 **不是pa0001

hongfeng1314
3楼-- · 2020-09-10 09:05

很难相信 ...

灬番茄
4楼-- · 2020-09-10 09:08

逻辑数据库由于性能问题而过时,它是官方数据库。

me_for_i
5楼-- · 2020-09-10 09:05

嗨,

看起来不错, 您必须使用CLOSE DATASET file_name。 程序结束。 请使用

打开数据集employee_file之类的控件,以默认的文本模式编码输出。

如果sy-subrc = 0。

循环。

*您逻辑

endloop。

带有lw_fullpath的消息s000(flex)'文件已成功下载到SAP服务器'

其他。

MESSAGE e000(flex)带有"数据下载错误"。

结尾。

不幸的是,您现在不能使用已过时的逻辑数据库,但这很容易。

https://help.sap.com/doc/abapdocu_752_index_htm /7.52/zh-CN/abenldb.htm

问候,

Nawa。

宇峰Kouji
6楼-- · 2020-09-10 09:14

您应该使用逻辑数据库PNPCE提供 日期。

请参阅报表SAPDBPNPCE的文档

一周热门 更多>