2020-08-22 20:22发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家您好,
我正在使用FM" SO_DOCUMENT_SEND_API1"将数据发送到邮件的附件中。
但是所有数据仅出现在excel文件的第一行。
在上述情况下请提供帮助。
谢谢。
"我正在使用FM" SO_DOCUMENT_SEND_API1""
不要。 这些功能模块很麻烦。 使用CL_BCS组的类。 记录完整,易于使用,可靠且包含大量示例。
如果希望有人给您答案而不是让我们猜测可能的原因,请共享您的代码。
嗨,
请检查以下几点的代码:
1。 创建附件表时-确保已添加换行符char。 (在您的执行子例程build_xls_data_table中。)
示例:
CONCATENATE XXXX xxxxx INTO it_attach由con_tab分隔。
CONCATENATE con_cret it_attach INTO it_attach。
其中con_tab =
然后您的数据将显示在单独的行中
此致
Venkat
请检查以下代码。
如果sy-batch不是初始的。执行POPULATE_EMAIL_MESSAGE_BODY。执行SEND_FILE_AS_EMAIL_ATTACHMENT 表IT_MESSAGE IT_ATTACH 使用'供应商主数据''xls'' 文件名'''''''更改GD_ERROR GD_RECIEVER。 ENDIF。 格式POPULATE_EMAIL_MESSAGE_BODY。刷新IT_MESSAGE。 IT_MESSAGE ='请查找随附的供应商主数据。 P_FORMAT P_FILENAME P_ATTDESCRIPTION P_SENDER_ADDRESS P_SENDER_ADDRES_TYPE 更改P_ERROR P_RECIEVER。数据:LD_ERROR类型SY-SUBRC, LD_RECIEVER类型SY-SUBRC LD_MTITLE像SODOCCHGI1-OBJ_DESCR, LD_EMAIL像SOMLRECI1-RECEIVER, LD_FORMAT类型SO_OBJ_TP, LD_ATTDESCRIPTION类型SO_OBJ_NAM, LDLDATTFILENAME类型SO_OBJ_ESS,DDR_SEN_DERA,DER_SENA,DER_SENA,DER_SEND _TYPE像SOEXTRECI1-ADR_TYP, LD_RECEIVER像SY-SUBRC。 * LD_EMAIL = P_EMAIL。 LD_MTITLE = P_MTITLE。 LD_FORMAT = P_FORMAT。 LD_ATTDESCRIPTION = P_ATTSCRIPTION = P_ATTSCRSCRIPTION 。 LD_SENDER_ADDRESS = P_SENDER_ADDRESS。 LD_SENDER_ADDRESS_TYPE = P_SENDER_ADDRES_TYPE。 *填写文档数据。 W_DOC_DATA-DOC_SIZE =1。 *填充主题/通用消息属性 W_DOC_DATA_OBJ = SY-LANGU。 W_DOC_DATA-OBJ_NAME ='SAPRPT'。 W_DOC_DATA-OBJ_DESCR = LD_MTITLE。 W_DOC_DATA-SENSITIVTY ='F'。 *填写文档数据并获取附件大小< br> CLEAR W_DOC_DATA。描述表IT_ATTACH行W_CNT。读取表IT_ATTACH索引W_CNT。 W_DOC_DATA-DOC_SIZE = (W_CNT-1)* 255 + STRLEN(IT_ATTACH)。 W_DOC_DATA -OBJ_LANGU = SY-LANGU。 W_DOC_DATA-OBJ_NAME ='SAPRPT'。 W_DOC_DATA-OBJ_DESCR = LD_MTITLE。 W_DOC_DATA-SENSITIVTY ='F'。清除T_ATTACHMENT。刷新T_ATTACHMENT。 T_ATT ACHMENT [] = PIT_ATTACH []。 *描述消息的正文 CLEAR T_PACKING_LIST。 REFRESH T_PACKING_LIST。 T_PACKING_LIST-TRANSF_BIN =空格。 T_PACKING_LIST-HEAD_START = 1. > T_PACKING_LIST-HEAD_NUM =0。 T_PACKING_LIST-BODY_START =1。描述表IT_MESSAGE行T_PACKING_LIST-BODY_NUM。 T_PACKING_LIST-DOC_TYPE ='RAW'。 APPEND T_PACKING_LIST。 *创建附件 通知 T_PACKING_LIST-TRANSF_BIN ='X'。 T_PACKING_LIST-HEAD_START = 1. T_PACKING_LIST-HEAD_NUM = 1. T_PACKING_LIST-BODY_START = 1. 描述表T_ATTACHMENT行T_PACKING_LIST-BODY_NUM。 T_PACKING_LIST-DOC_TYPE = LD_FORMAT。 T_PACKING_LIST-OBJ_DESCR = LD_ATTDESCRIPTION。 T_PACKING_LIST-OBJ_NAME = LD_ATTFILENAME。 T_PACKING_LIST-DOC_SIZE = T_PACKING_LIST-BODY_NUM * 255。 添加收件人的电子邮件地址 清除T_RECEIVERS。刷新T_RECEIVERS。 选择*从ZTVEN_EMAIL到表@DATA(LT_EM AIL)哪里TYP_PER ='R'。如果SY-SUBRC处于初始状态。在LT_EMAIL分配字段LOOP到FIELD-SYMBOL()。 T_RECEIVERS-RECEIVER = -EMAIL_ID。 > T_RECEIVERS-REC_TYPE ='U'。 T_RECEIVERS-COM_TYPE ='INT'。 T_RECEIVERS-NOTIF_DEL ='X'。 T_RECEIVERS-NOTIF_NDEL ='X'。 APPEND T_RECEIVERS。 > ENDLOOP。 ENDIF。 呼叫功能'SO_DOCUMENT_SEND_API1'导出 DOCUMENT_DATA = W_DOC_DATA PUT_IN_OUTBOX ='X' SENDER_ADDRESS = LD_SENDER_ADDRESS SENDER br> COMMIT_WORK ='X'导入 SENT_TO_ALL = W_SENT_ALL 表格 PACKING_LIST = T_PACKING_LIST CONTENTS_BIN = T_ATTACHMENT CONTENTS_TXT = IT_MESSAGE 接收者= T_RECEIVERS br> TOO_MANY_RECEIVERS = 1 DOCUMENT_NOT_SENT = 2 DOCUMENT_TYPE_NOT_EXIST = 3 OPERATION_NO_AUTHORIZATION = 4 PARAMETER_ERROR = 5 X_ERROR = 6 ENQUEUE_ERROR = 7 其他= 8。 > *填充zerror返回码 LD_ER ROR = SY-SUBRC。 *填充zreceiver返回代码 LOOP AT T_RECEIVERS。 LD_RECEIVER = T_RECEIVERS-RETRN_CODE。 ENDLOOP。
您的代码 不会帮助我们理解您的问题。 您说附件仅包含一行,但是您的代码从未知的输入参数PIT_ATTACH中获取了附件。 您了解没有最少的信息量就不可能为您提供帮助吗?
最多设置5个标签!
"我正在使用FM" SO_DOCUMENT_SEND_API1""
不要。 这些功能模块很麻烦。 使用CL_BCS组的类。 记录完整,易于使用,可靠且包含大量示例。
如果希望有人给您答案而不是让我们猜测可能的原因,请共享您的代码。
嗨,
请检查以下几点的代码:
1。 创建附件表时-确保已添加换行符char。 (在您的执行子例程build_xls_data_table中。)
示例:
CONCATENATE XXXX xxxxx INTO it_attach由con_tab分隔。
CONCATENATE con_cret it_attach INTO it_attach。
其中con_tab =
然后您的数据将显示在单独的行中
此致
Venkat
请检查以下代码。
如果sy-batch不是初始的。
)。 -EMAIL_ID。 > T_RECEIVERS-REC_TYPE ='U'。
SENDER br> COMMIT_WORK ='X'
执行POPULATE_EMAIL_MESSAGE_BODY。
执行SEND_FILE_AS_EMAIL_ATTACHMENT
表IT_MESSAGE
IT_ATTACH
使用'供应商主数据'
'xls'
' 文件名'
''
''
''
更改GD_ERROR
GD_RECIEVER。
ENDIF。
格式POPULATE_EMAIL_MESSAGE_BODY。
刷新IT_MESSAGE。
IT_MESSAGE ='请查找随附的供应商主数据。 P_FORMAT
P_FILENAME
P_ATTDESCRIPTION
P_SENDER_ADDRESS
P_SENDER_ADDRES_TYPE
更改P_ERROR
P_RECIEVER。
数据:LD_ERROR类型SY-SUBRC,
LD_RECIEVER类型SY-SUBRC LD_MTITLE像SODOCCHGI1-OBJ_DESCR,
LD_EMAIL像SOMLRECI1-RECEIVER,
LD_FORMAT类型SO_OBJ_TP,
LD_ATTDESCRIPTION类型SO_OBJ_NAM,
LDLDATTFILENAME类型SO_OBJ_ESS,DDR_SEN_DERA,DER_SENA,DER_SENA,DER_SEND _TYPE像SOEXTRECI1-ADR_TYP,
LD_RECEIVER像SY-SUBRC。
* LD_EMAIL = P_EMAIL。
LD_MTITLE = P_MTITLE。
LD_FORMAT = P_FORMAT。
LD_ATTDESCRIPTION = P_ATTSCRIPTION = P_ATTSCRSCRIPTION 。
LD_SENDER_ADDRESS = P_SENDER_ADDRESS。
LD_SENDER_ADDRESS_TYPE = P_SENDER_ADDRES_TYPE。
*填写文档数据。
W_DOC_DATA-DOC_SIZE =1。
*填充主题/通用消息属性
W_DOC_DATA_OBJ = SY-LANGU。
W_DOC_DATA-OBJ_NAME ='SAPRPT'。
W_DOC_DATA-OBJ_DESCR = LD_MTITLE。
W_DOC_DATA-SENSITIVTY ='F'。
*填写文档数据并获取附件大小< br> CLEAR W_DOC_DATA。
描述表IT_ATTACH行W_CNT。
读取表IT_ATTACH索引W_CNT。
W_DOC_DATA-DOC_SIZE =
(W_CNT-1)* 255 + STRLEN(IT_ATTACH)。
W_DOC_DATA -OBJ_LANGU = SY-LANGU。
W_DOC_DATA-OBJ_NAME ='SAPRPT'。
W_DOC_DATA-OBJ_DESCR = LD_MTITLE。
W_DOC_DATA-SENSITIVTY ='F'。
清除T_ATTACHMENT。
刷新T_ATTACHMENT。
T_ATT ACHMENT [] = PIT_ATTACH []。
*描述消息的正文
CLEAR T_PACKING_LIST。
REFRESH T_PACKING_LIST。
T_PACKING_LIST-TRANSF_BIN =空格。
T_PACKING_LIST-HEAD_START = 1.
> T_PACKING_LIST-HEAD_NUM =0。
T_PACKING_LIST-BODY_START =1。
描述表IT_MESSAGE行T_PACKING_LIST-BODY_NUM。
T_PACKING_LIST-DOC_TYPE ='RAW'。
APPEND T_PACKING_LIST。
*创建附件 通知
T_PACKING_LIST-TRANSF_BIN ='X'。
T_PACKING_LIST-HEAD_START = 1.
T_PACKING_LIST-HEAD_NUM = 1.
T_PACKING_LIST-BODY_START = 1.
描述表T_ATTACHMENT行T_PACKING_LIST-BODY_NUM。
T_PACKING_LIST-DOC_TYPE = LD_FORMAT。
T_PACKING_LIST-OBJ_DESCR = LD_ATTDESCRIPTION。
T_PACKING_LIST-OBJ_NAME = LD_ATTFILENAME。
T_PACKING_LIST-DOC_SIZE = T_PACKING_LIST-BODY_NUM * 255。 添加收件人的电子邮件地址
清除T_RECEIVERS。
刷新T_RECEIVERS。
选择*从ZTVEN_EMAIL到表@DATA(LT_EM AIL)哪里TYP_PER ='R'。
如果SY-SUBRC处于初始状态。
在LT_EMAIL分配字段LOOP到FIELD-SYMBOL(
T_RECEIVERS-RECEIVER =
T_RECEIVERS-COM_TYPE ='INT'。
T_RECEIVERS-NOTIF_DEL ='X'。
T_RECEIVERS-NOTIF_NDEL ='X'。
APPEND T_RECEIVERS。
> ENDLOOP。
ENDIF。
呼叫功能'SO_DOCUMENT_SEND_API1'
导出
DOCUMENT_DATA = W_DOC_DATA
PUT_IN_OUTBOX ='X'
SENDER_ADDRESS = LD_SENDER_ADDRESS
导入
SENT_TO_ALL = W_SENT_ALL
表格
PACKING_LIST = T_PACKING_LIST
CONTENTS_BIN = T_ATTACHMENT
CONTENTS_TXT = IT_MESSAGE
接收者= T_RECEIVERS br> TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
DOCUMENT_TYPE_NOT_EXIST = 3
OPERATION_NO_AUTHORIZATION = 4
PARAMETER_ERROR = 5
X_ERROR = 6
ENQUEUE_ERROR = 7
其他= 8。 > *填充zerror返回码
LD_ER ROR = SY-SUBRC。
*填充zreceiver返回代码
LOOP AT T_RECEIVERS。
LD_RECEIVER = T_RECEIVERS-RETRN_CODE。
ENDLOOP。
您的代码 不会帮助我们理解您的问题。 您说附件仅包含一行,但是您的代码从未知的输入参数PIT_ATTACH中获取了附件。 您了解没有最少的信息量就不可能为您提供帮助吗?
一周热门 更多>