BAPI_DOCUMENT_CREATE2长文本N行问题

2020-08-25 08:44发布

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

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


嗨。

当用户选择要上传的PDF文件并放置文字以证明其必要性时,我正在使用此BAPI_DOCUMENT_CREATE2创建CV01N文档。

用户可以填写两行或更多行。

但是当我执行它填充2或3行时,当我输入CV03N来查看它时,长文本在创建的文档中只有一行。

关注随附的CV03N文档,仅在"说明"标签上显示一行。 :/

 FORM upload_anexo更改p_documentnumber类型TYPE bapi_doc_aux-docnumber。


  数据:
   " BAPI_DOCUMENT_CREATE2
  ls_documentdata类似于bapi_doc_draw2,
  lt_documentfiles bapi_doc_files2的标准类型表,
  ls_documentfiles与lt_documentfiles一样,
  lt_longtexts bapi_doc_text类型标准表,
  ls_longtexts,就像lt_longtexts,
  lv_documentnumber TYPE bapi_doc_aux-docnumber,
  ls_return TYPE bapiret2。


  清除p_documentnumber。


 * -------------------------------------------------  ------------------- *
  ",用户必须填写文字来证明帐单合理。
 * -------------------------------------------------  ------------------- *
  通话画面200。


  "读取在0200屏幕(编辑框)上写的用户文本
  从屏幕0200返回
  如果g_mytable []不初始化。
  免费lt_longtexts。


  循环至g_mytable INTO DATA(ls_mytable)。
    清除ls_longtexts。
 * ls_longtexts-deletevalue
    ls_longtexts-language ='P'。" sy-langu。
    ls_longtexts-language_iso ='PT'。" sy-langu。
    ls_longtexts-textline = ls_mytable-line。
    将ls_longtexts插入表lt_longtexts中。
  结局。

  其他。
    MESSAGE s000(zsd)带"错误,用户未填写文本"
                      显示" E"。
    返回。
  万一。


 * -------------------------------------------------  ------------------- *
  "获取文件名
 * -------------------------------------------------  ------------------- *
  执行ler_arquivo_comprovante。


  读取文件名
  读取表ti_file INTO DATA(ls_file)INDEX 1。
  如果sy-subrc = 0。
    ls_documentfiles-documenttype ='ZAV'。"在系统上生成统一名称16个字符

   尝试。
    ls_documentfiles-documentnumber = cl_system_uuid => create_uuid_x16_static()。

   捕获cx_uuid_error。  "
     MESSAGE s000(zsd)带有"错误"
     显示" E"。
     返回。
   ENDTRY。


    ls_documentfiles-documentpart ='000'。
    ls_documentfiles-documentversion ='00'。
    ls_documentfiles-storagecategory ='DMS_C1_ST'。
    ls_documentfiles-wsapplication ='PDF'。
    ls_documentfiles-docfile = ls_file-filename。
    ls_documentfiles-description ='清单示例'。
    ls_documentfiles-language ='PT'。
    将ls_documentfiles插入表lt_documentfiles中。
  万一。


  BREAK-POINT。
 * -------------------------------------------------  ------------------- *
  "创建文档CV01N
 * -------------------------------------------------  ------------------- *
  ls_documentdata-documenttype ='ZAV'。
  ls_documentdata-documentnumber = ls_documentfiles-documentnumber。  CHAR16统一码
  ls_documentdata-documentversion ='00'。
  ls_documentdata-documentpart ='000'。
  ls_documentdata-description ='帐单示例'。
  ls_documentdata-username = sy-uname。
  ls_documentdata-statusintern ='LB'。  "发布
 

 通话功能" BAPI_DOCUMENT_CREATE2"
  出口
     documentdata = ls_documentdata
 * HOSTNAME =
 * DOCBOMCHANGENUMBER =
 * DOCBOMVALIDFROM =
 * DOCBOMREVISIONLEVEL =
 * CAD_MODE =''
 * PF_FTP_DEST =''
 * PF_HTTP_DEST =''
 * DEFAULTCLASS ='X'
  输入
 * DOCUMENTTYPE =
     documentnumber = lv_documentnumber
 * DOCUMENTPART =
 * DOCUMENTVERSION =
     返回= ls_return
  桌子
 *特征值=
 *分类=
 *文档说明=
 *对象链接=
 *文档结构=
     documentfiles = lt_documentfiles
     长文本= lt_longtexts
 *组件= cv01n-text-just-1-line-error.png
  。


  如果lv_documentnumber不是INITIAL。
    通话功能'BAPI_TRANSACTION_COMMIT'
    出口
       等待='X'。
      p_documentnumber = lv_documentnumber。
  其他。
     通话功能" BAPI_TRANSACTION_ROLLBACK"。
     MESSAGE s000(zsd)WITH'创建文档时出错'
                       显示" E"。
     返回。
  万一。


 ENDFORM。  " UPLOAD_ANEXO 

(17.6 kB)

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

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


嗨。

当用户选择要上传的PDF文件并放置文字以证明其必要性时,我正在使用此BAPI_DOCUMENT_CREATE2创建CV01N文档。

用户可以填写两行或更多行。

但是当我执行它填充2或3行时,当我输入CV03N来查看它时,长文本在创建的文档中只有一行。

关注随附的CV03N文档,仅在"说明"标签上显示一行。 :/

 FORM upload_anexo更改p_documentnumber类型TYPE bapi_doc_aux-docnumber。


  数据:
   " BAPI_DOCUMENT_CREATE2
  ls_documentdata类似于bapi_doc_draw2,
  lt_documentfiles bapi_doc_files2的标准类型表,
  ls_documentfiles与lt_documentfiles一样,
  lt_longtexts bapi_doc_text类型标准表,
  ls_longtexts,就像lt_longtexts,
  lv_documentnumber TYPE bapi_doc_aux-docnumber,
  ls_return TYPE bapiret2。


  清除p_documentnumber。


 * -------------------------------------------------  ------------------- *
  ",用户必须填写文字来证明帐单合理。
 * -------------------------------------------------  ------------------- *
  通话画面200。


  "读取在0200屏幕(编辑框)上写的用户文本
  从屏幕0200返回
  如果g_mytable []不初始化。
  免费lt_longtexts。


  循环至g_mytable INTO DATA(ls_mytable)。
    清除ls_longtexts。
 * ls_longtexts-deletevalue
    ls_longtexts-language ='P'。" sy-langu。
    ls_longtexts-language_iso ='PT'。" sy-langu。
    ls_longtexts-textline = ls_mytable-line。
    将ls_longtexts插入表lt_longtexts中。
  结局。

  其他。
    MESSAGE s000(zsd)带"错误,用户未填写文本"
                      显示" E"。
    返回。
  万一。


 * -------------------------------------------------  ------------------- *
  "获取文件名
 * -------------------------------------------------  ------------------- *
  执行ler_arquivo_comprovante。


  读取文件名
  读取表ti_file INTO DATA(ls_file)INDEX 1。
  如果sy-subrc = 0。
    ls_documentfiles-documenttype ='ZAV'。"在系统上生成统一名称16个字符

   尝试。
    ls_documentfiles-documentnumber = cl_system_uuid => create_uuid_x16_static()。

   捕获cx_uuid_error。  "
     MESSAGE s000(zsd)带有"错误"
     显示" E"。
     返回。
   ENDTRY。


    ls_documentfiles-documentpart ='000'。
    ls_documentfiles-documentversion ='00'。
    ls_documentfiles-storagecategory ='DMS_C1_ST'。
    ls_documentfiles-wsapplication ='PDF'。
    ls_documentfiles-docfile = ls_file-filename。
    ls_documentfiles-description ='清单示例'。
    ls_documentfiles-language ='PT'。
    将ls_documentfiles插入表lt_documentfiles中。
  万一。


  BREAK-POINT。
 * -------------------------------------------------  ------------------- *
  "创建文档CV01N
 * -------------------------------------------------  ------------------- *
  ls_documentdata-documenttype ='ZAV'。
  ls_documentdata-documentnumber = ls_documentfiles-documentnumber。  CHAR16统一码
  ls_documentdata-documentversion ='00'。
  ls_documentdata-documentpart ='000'。
  ls_documentdata-description ='帐单示例'。
  ls_documentdata-username = sy-uname。
  ls_documentdata-statusintern ='LB'。  "发布
 

 通话功能" BAPI_DOCUMENT_CREATE2"
  出口
     documentdata = ls_documentdata
 * HOSTNAME =
 * DOCBOMCHANGENUMBER =
 * DOCBOMVALIDFROM =
 * DOCBOMREVISIONLEVEL =
 * CAD_MODE =''
 * PF_FTP_DEST =''
 * PF_HTTP_DEST =''
 * DEFAULTCLASS ='X'
  输入
 * DOCUMENTTYPE =
     documentnumber = lv_documentnumber
 * DOCUMENTPART =
 * DOCUMENTVERSION =
     返回= ls_return
  桌子
 *特征值=
 *分类=
 *文档说明=
 *对象链接=
 *文档结构=
     documentfiles = lt_documentfiles
     长文本= lt_longtexts
 *组件= cv01n-text-just-1-line-error.png
  。


  如果lv_documentnumber不是INITIAL。
    通话功能'BAPI_TRANSACTION_COMMIT'
    出口
       等待='X'。
      p_documentnumber = lv_documentnumber。
  其他。
     通话功能" BAPI_TRANSACTION_ROLLBACK"。
     MESSAGE s000(zsd)WITH'创建文档时出错'
                       显示" E"。
     返回。
  万一。


 ENDFORM。  " UPLOAD_ANEXO 

(17.6 kB)
付费偷看设置
发送
4条回答
Bunny_CDM
1楼-- · 2020-08-25 09:00

Ola Glauco,

1。 " lt_longtexts

后使用空括号

longtexts = lt_longtexts []

2。 "可以使用APPEND代替INSERT

将lt_longtexts附加到lt_bapi_longtexts。

*

*示例:标准包含程序LCDESKF13使用BAPI填充长文本

数据:lt_longtexts(如bapi_doc_text_keys)出现在标题行为0的地方

类似于bapi_doc_text的lt_bapi_longtexts在标题行中出现0。

*使用结构BAPI_DOC_TEXT构建长文本的内部表

* BAPI检查使用情况的位置列表

*填写表格lt_bapi_longtexts,清除:lt_bapi_longtexts。

在lt_longtexts处

循环,其中tab_index = wa_plm_document-index。

将lt_longtexts附加到lt_bapi_longtexts。 "可以使用APPEND代替INSERT

endloop。

*等

呼叫功能'BAPI_DOCUMENT_CREATE2'

导出

documentdata = l_doc_data

导入

documenttype = l_dokar

documentnumber = l_doknr

documentpart = l_doktl

documentversion = l_dokvr

return = l_return

表格

特征值= lt_char_val

classallocations = lt_class_alo

documentfiles = lt_files []

longtexts = lt_longtexts []"在lt_longtexts后使用空括号

documentdescriptions = lt_doc_desc []。

*等

*蟒蛇节

参考

https://answers.sap.com /questions/3053259/help-on-bapidocumentcreate2.html

https://www.abapforum.com/forum /viewtopic.php?t=1414

spaceman01
2楼-- · 2020-08-25 09:13

您确定CV01N允许您为指定语言输入多于1行吗?

CJones
3楼-- · 2020-08-25 09:13

好问题。 :/
我将与职能顾问联系,并在此处给出答案。

nice_wp
4楼-- · 2020-08-25 09:15

Oi Joanna。


我将尝试 括号。 但是我已经调试好了,这3行已经在BAPI内部被识别,并且BAPI本身在执行过程中"丢失"了我的另外两行。
我在猜测是否存在错误或需要填充的其他参数 一起lt_longtext。 我想我需要对其进行更多的挖掘或更多的调试。

标准程序示例从另一种内部表格式填充了它,但是最后这些字段是相同的,就像我已经在填充它一样

另一个链接显示了另一个功能,该功能可以将文件创建到文件夹,但是在我的情况下,客户仅使用CV01N来上传文件。

感谢您的快速操作。

Boas festas pravocêtambém:)

一周热门 更多>