循环内部表并添加值

2020-09-10 04:14发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)全部,我需要您的帮助。 我要从表...

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

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


全部,我需要您的帮助。 我要从表PA0001(仓库,pernr,btrtl,orgeh,bukrs,kostl,计划)表PA0002(vorna,nachn)和表PA0105(usrid,usrid_long)中拉满字段,并将它们放入PERNR的内部表中 是关键。

接下来,我需要循环我的内部表(i_employee),对于每个PERNR,使用值PA0105-usrid_long填充字段'usrid_long',其中PA0105-subty ='0010'。 "这不起作用。该表无法更新。

此外,我需要调用功能模块'Z_HR_GET_MGR_BY_ORG'来获取内部表中每个pernr的管理器PERNR。 我通过员工职位(i_employee-plans),并收到经理pernr(首席)。 我需要将返回的值存储在每个pernr的内部表中。 这也不起作用。 我可以确认FM正常工作。

然后,我需要将我抓住的经理pernr与IT中的pernr进行比较。 如果它们相等,则将" Y"传递给批准者,否则,将" N"传递给批准者。

下面是我的代码。 谁能为我的初学者修复我的代码? 非常感谢。

表格:
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。
字段符号:任何类型。


类型:
t_pernr的开头,
pernr类型pa0001-pernr,
werks类型pa0001-werks,< br> 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,
子类型TYPE pa0105-subty,
批准者 ,
t_pernr的结尾。

数据:带有标题行的i_employee类型的t_pernr表。

数据:w_employee类型的t_pernr。

*用PERNR将所有表连接在一起 并用作键来提取必填字段。
选择pa0001〜pernr pa0001〜werks pa0002〜vorna pa0002〜nachn pa0001〜btrtl pa0001〜orgeh pa0001〜bukrs pa0001〜kostl
pa0105〜usrid pa0001〜plans
INTO 表i_employee
的对应字段来自pa0001内部联接pa0002 on pa0001〜pernr = pa0002〜pernr内部联接pa0105 on pa0001〜pernr = pa0105〜pernr
其中pa0105〜SUBTY ='0001'和pa0001〜endda ='99991231 '。

*为每位员工获取电子邮件地址-子类型0010
i_employee上的LOOP。
i_employee-usrid_long = pa0105-usrid_long。
修改i_employee运输usrid_long WHERE pernr = pa0105-pernr AND subty ='0010'。
ENDLOOP。


* *将员工职位传递给FM以获取负责人/费用审批者ID
SORT i_employee BY pernr。
在i_employee ASSIGNING处循环
呼叫功能'Z_HR_GET_MGR_BY_ORG'
导出
计划= i_employee-plans
导入
mgr_pernr =主管。
如果i_employee-chief EQ i_employee-pernr。
i_employee- approver ='Y'。
ELSE。
i_employee-approver ='N'。
ENDIF。
ENDLOOP。

9条回答
能不能别闹
2020-09-10 04:47

您好,以便更好地阐明我的问题。 我正在使用select,通过下面显示的关键PERNR将多个HR表中的多个字段拉到一个itab中。

 SELECT pa0001〜pernr pa0001〜werks pa0002〜vorna pa0002〜nachn pa0001〜btrtl pa0001〜orgeh pa0001〜bukrs pa0001〜kostl
  pa0105〜剩余的pa0001〜方案
  表i_employee的对应字段
  从pa0001内部联接pa0002在pa0001〜pernr上= pa0002〜pernr内部联接pa0105在pa0001〜pernr上= pa0105〜pernr
  在pa0105〜SUBTY ='0001'和pa0001〜endda ='99991231'的地方。

接下来,我要遍历此itab(i_employee),并使用每个PANR的PA0105-usrid_long中的值更新usrid_long字段。 这是我需要帮助的地方。

 i_employee的LOOP。
  i_employee-usrid_long = pa0105-usrid_long。
  修改i_employee在usrid_long处运输pernr = pa0105-pernr AND subty ='0010'。
  ENDLOOP。

一周热门 更多>