善待自己,珍惜今天,恩泽他人,享受生活

不放弃任何解决困难的机会,人的一生就是解决困难的过程。 当我们走完一生才能说没有问题要解决了。 面对工作、生活上的压力,面对来自家庭、朋友、同事、上司等的困惑。 要排除万难,否则我们就会被万难排除!

博客园 首页 新随笔 联系 订阅 管理

内文这个东西就像长篇大论的描述,跟在WORD里面一样可以输入无数个字。如果在sap中输入事务码进去可以维护多少个字都可以,但是如果是用.NET调用BAPI传进去内文的话,会将内文超过132个字符的内容全部截掉。要怎么样才能全部导入所有内文呢?

以下以导入请购单的程序来描述:

//表头内文 转换多笔实现超长文本插入

......
PRHEADERTEXT.Insert(); // 这个是BAPI里面导入内文的参数
if (txtQG07.Text.Trim().Length > 120) // txtQG07.Text的内容就是所有内文,这里用120个字符判断
{
int len = txtQG07.Text.Trim().Length / 120; // 这里len取整数
len = len + 1; // 可能有结余,故加一
for (int q = 0; q < len; q++)
{
if (q + 1 == len) // 如果到了最后一行,则去最后一行之后的所有内文
PRHEADERTEXT.CurrentRow.SetValue("TEXT_LINE", txtQG07.Text.Trim().Substring(q * 120));
else
PRHEADERTEXT.CurrentRow.SetValue("TEXT_LINE", txtQG07.Text.Trim().Substring(q * 120, 120));
PRHEADERTEXT.Append(); // 将截取的每一段内容都附加到内文后面。如果不加这一句,则文本会倒置
}
}
else
{
PRHEADERTEXT.CurrentRow.SetValue("TEXT_LINE", txtQG07.Text.Trim());
}

......

如此则可以将内文全部导入。但如果是项目中的内文呢?因为会涉及到传入项目序号,所以需要稍作处理:

//项目内文
PRITEMTEXT.Insert();
if (ds.Tables[0].Rows[i]["QGA11"].ToString().Trim().Length > 120)
{
int len = ds.Tables[0].Rows[i]["QGA11"].ToString().Trim().Length / 120;
len = len + 1;
for (int q = 0; q < len; q++)
{
PRITEMTEXT.CurrentRow.SetValue("PREQ_ITEM", j.ToString()); // 将额外需要的参数都添加到这里,每循环一次都要SetValue一次
if (q + 1 == len)
PRITEMTEXT.CurrentRow.SetValue("TEXT_LINE", ds.Tables[0].Rows[i]["QGA11"].ToString().Trim().Substring(q * 120));
else
PRITEMTEXT.CurrentRow.SetValue("TEXT_LINE", ds.Tables[0].Rows[i]["QGA11"].ToString().Trim().Substring(q * 120, 120));
PRITEMTEXT.Append();
}
}
else
{
PRITEMTEXT.CurrentRow.SetValue("PREQ_ITEM", j.ToString());
PRITEMTEXT.CurrentRow.SetValue("TEXT_LINE", ds.Tables[0].Rows[i]["QGA11"].ToString());
}

posted on 2011-12-10 23:43  笨笨丁  阅读(324)  评论(0编辑  收藏  举报