2020-08-25 11:19发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我正在尝试打印开票凭证,一个PO正确地打印了所有文本元素,但是另一个PO跳过了几个文本元素。我没有明白我要说的重点。
这是紧急问题,请帮助
预先感谢
Deepa。
因此,当您阅读程序代码时,您会在tvbdpr-charg NE空间不存在的元素之前找到条件
。 通话功能" WRITE_FORM" 出口 元素='ITEM_LINE_BATCH' 例外情况 其他= 1。
仅当填充TVBDR-CHARG时,才会显示ITEM_LINE_BATCH。
FORM item_print。 数据:da_ganf(1)TYPE c,"用于计费更正的打印标志da_lanf(1)TYPE c。"用于计费更正的打印标志CALL FUNCTION'WRITE_FORM'"第一个标头EXPORTING元素='ITEM_HEADER'EXCEPTIONS OTHERS = 1。 subrc NE 0. PERFORM protocol_update。ENDIF。CALL FUNCTION'WRITE_FORM'"激活标题EXPORTING元素='ITEM_HEADER'type ='TOP'例外=1。如果sy-subrc NE 0. PERFORM protocol_update。 万一。 环视电视节目。 vbdpr = tvbdpr。 * Bei Fakturen,死于keine Anzahlungsanforderungen,而werden *死于Verrechnungspositionen nicht gedruckt IF(vbdkr-fktyp EQ'P')或(vbdkr-fktyp NE'P'和vbdpr-fareg NA'45')。 使用da_ganf da_lanf来执行item_billing_correction_header。 如果tvbdpr-uecha EQ vbdpr-posnr或tvbdpr-uecha是INITIAL。 执行get_item_prices。 执行get_item_characteristics。 CALL FUNCTION'CONTROL_FORM'EXPORTING命令='PROTECT'。 CALL FUNCTION'WRITE_FORM'EXPORTING元素='ITEM_LINE'。 如果tvbdpr-charg NE空间。 调用功能'WRITE_FORM'EXPORTING元素='ITEM_LINE_BATCH'EXCEPTIONS OTHERS =1。如果sy-subrc NE0。执行FORFORM protocol_update。 万一。 万一。 PERFORM item_price_print。 PERFORM item_characteristics_print。 PERFORM item_reference_billing。 CALL FUNCTION'CONTROL_FORM'EXPORTING命令='ENDPROTECT'。 PERFORM item_text_print。 进行不同的收货人。 PERFORM different_order_no。 进行different_delivery_no。 进行different_extern_no。 请执行different_purchase_order_no。 PERFORM different_reference_no。 其他。 如果不是tvbdpr-fkimg是初始的。 执行get_item_prices。 调用功能'WRITE_FORM'EXPORTING元素='ITEM_LINE_BATCH'EXCEPTIONS OTHERS =1。如果sy-subrc NE0。执行FORFORM protocol_update。 万一。 PERFORM item_price_print。 万一。 万一。 *如果不是VBDPR-PREFE是初始的。 *调用功能'WRITE_FORM'*导出* ELEMENT ='PREFERENCE_TEXT'* EXCEPTIONS *其他=1。*如果SY-SUBRC NE0。*执行PROTOCOL_UPDATE。 * 万一。 * 万一。 * ENHANCEMENT-POINT ITEM_PRINT_01 SPOTS ES_RVADIN01。 万一。 如果是vbdkr-fktyp NE'P'。 如果vbdpr-fareg CA'45'。 PERFORM get_downpayment_data。 万一。 万一。 结局。 CALL FUNCTION'WRITE_FORM'"停用报头EXPORTING元素='ITEM_HEADER'功能='DELETE'类型='TOP'例外其他情况= 1. IF sy-subrc NE0。PERFORM protocol_update。ENDIF。ENDFORM。" ITEM_PRINT
我有一个成功案例PO" 47600358"。脚本执行所有文本元素
1./E ITEM_LINE
2./E ITEM_TEXT
3./E ITEM_LINE_BATCH
4./E ITEM_LINE_PRICE_QUANTITY
.......
8./E ITEM_SUM
对于失败案例PO" 46996011"。脚本会跳过文本元素。
3./E ITEM_SUM
对于许多订单项,这些PO像循环一样执行。 1./E ITEM_LINE 2./E ITEM_TEXT 3./E ITEM_LINE_BATCH 4./E ITEM_LINE_PRICE_QUANTITY ...它将再次进入同一循环。 完成所有订单项后,将输入文本元素/E ITEM_SUM。
成功案例处理如上所述。
但针对失败情况。 在循环1./E ITEM_LINE 2./E ITEM_TEXT ..中,它仅执行这两个文本元素。.在完成所有订单项后,它将直接用于文本元素/E ITEM_SUM。
因此在失败情况下/E ITEM_LINE_BATCH和/E ITEM_LINE_PRICE_QUANTITY的内容丢失。
这是我的问题。
请帮助。
此致
Deepa
请使用CODE按钮设置代码格式,以便以更加用户友好的格式(彩色)显示代码。
(这样 是正确显示的)
是的,我已对其进行调试。 如果我将断点保留在ITEM_LINE中,则成功情况和失败情况都将进入调试器模式,但是如果我将断点保留在ITEM_LINE_PRICE_QUANTITY中,则成功情况将进入调试器,但失败情况不会进入调试器模式。
作为参考,如果人们想在自己的S/4系统中进行尝试,我认为等效的标准打印程序为RVADIN01,表格为RVINVOICE01_GG(或其他任何具有近似名称的打印程序和表格)。
您能给我们您的打印程序(在文本文件中)吗?
最多设置5个标签!
因此,当您阅读程序代码时,您会在tvbdpr-charg NE空间不存在的元素之前找到条件
仅当填充TVBDR-CHARG时,才会显示ITEM_LINE_BATCH。
FORM item_print。 数据:da_ganf(1)TYPE c,"用于计费更正的打印标志da_lanf(1)TYPE c。"用于计费更正的打印标志CALL FUNCTION'WRITE_FORM'"第一个标头EXPORTING元素='ITEM_HEADER'EXCEPTIONS OTHERS = 1。 subrc NE 0. PERFORM protocol_update。ENDIF。CALL FUNCTION'WRITE_FORM'"激活标题EXPORTING元素='ITEM_HEADER'type ='TOP'例外=1。如果sy-subrc NE 0. PERFORM protocol_update。 万一。 环视电视节目。 vbdpr = tvbdpr。 * Bei Fakturen,死于keine Anzahlungsanforderungen,而werden *死于Verrechnungspositionen nicht gedruckt IF(vbdkr-fktyp EQ'P')或(vbdkr-fktyp NE'P'和vbdpr-fareg NA'45')。 使用da_ganf da_lanf来执行item_billing_correction_header。 如果tvbdpr-uecha EQ vbdpr-posnr或tvbdpr-uecha是INITIAL。 执行get_item_prices。 执行get_item_characteristics。 CALL FUNCTION'CONTROL_FORM'EXPORTING命令='PROTECT'。 CALL FUNCTION'WRITE_FORM'EXPORTING元素='ITEM_LINE'。 如果tvbdpr-charg NE空间。 调用功能'WRITE_FORM'EXPORTING元素='ITEM_LINE_BATCH'EXCEPTIONS OTHERS =1。如果sy-subrc NE0。执行FORFORM protocol_update。 万一。 万一。 PERFORM item_price_print。 PERFORM item_characteristics_print。 PERFORM item_reference_billing。 CALL FUNCTION'CONTROL_FORM'EXPORTING命令='ENDPROTECT'。 PERFORM item_text_print。 进行不同的收货人。 PERFORM different_order_no。 进行different_delivery_no。 进行different_extern_no。 请执行different_purchase_order_no。 PERFORM different_reference_no。 其他。 如果不是tvbdpr-fkimg是初始的。 执行get_item_prices。 调用功能'WRITE_FORM'EXPORTING元素='ITEM_LINE_BATCH'EXCEPTIONS OTHERS =1。如果sy-subrc NE0。执行FORFORM protocol_update。 万一。 PERFORM item_price_print。 万一。 万一。 *如果不是VBDPR-PREFE是初始的。 *调用功能'WRITE_FORM'*导出* ELEMENT ='PREFERENCE_TEXT'* EXCEPTIONS *其他=1。*如果SY-SUBRC NE0。*执行PROTOCOL_UPDATE。 * 万一。 * 万一。 * ENHANCEMENT-POINT ITEM_PRINT_01 SPOTS ES_RVADIN01。 万一。 如果是vbdkr-fktyp NE'P'。 如果vbdpr-fareg CA'45'。 PERFORM get_downpayment_data。 万一。 万一。 结局。 CALL FUNCTION'WRITE_FORM'"停用报头EXPORTING元素='ITEM_HEADER'功能='DELETE'类型='TOP'例外其他情况= 1. IF sy-subrc NE0。PERFORM protocol_update。ENDIF。ENDFORM。" ITEM_PRINT
# p#我有一个成功案例PO" 47600358"。脚本执行所有文本元素
1./E ITEM_LINE
2./E ITEM_TEXT
3./E ITEM_LINE_BATCH
4./E ITEM_LINE_PRICE_QUANTITY
.......
8./E ITEM_SUM
对于失败案例PO" 46996011"。脚本会跳过文本元素。
1./E ITEM_LINE
2./E ITEM_TEXT
3./E ITEM_SUM
对于许多订单项,这些PO像循环一样执行。 1./E ITEM_LINE 2./E ITEM_TEXT 3./E ITEM_LINE_BATCH 4./E ITEM_LINE_PRICE_QUANTITY ...它将再次进入同一循环。 完成所有订单项后,将输入文本元素/E ITEM_SUM。
成功案例处理如上所述。
但针对失败情况。 在循环1./E ITEM_LINE 2./E ITEM_TEXT ..中,它仅执行这两个文本元素。.在完成所有订单项后,它将直接用于文本元素/E ITEM_SUM。
因此在失败情况下/E ITEM_LINE_BATCH和/E ITEM_LINE_PRICE_QUANTITY的内容丢失。
这是我的问题。
请帮助。
此致
Deepa
请使用CODE按钮设置代码格式,以便以更加用户友好的格式(彩色)显示代码。
(这样 是正确显示的)
是的,我已对其进行调试。 如果我将断点保留在ITEM_LINE中,则成功情况和失败情况都将进入调试器模式,但是如果我将断点保留在ITEM_LINE_PRICE_QUANTITY中,则成功情况将进入调试器,但失败情况不会进入调试器模式。
作为参考,如果人们想在自己的S/4系统中进行尝试,我认为等效的标准打印程序为RVADIN01,表格为RVINVOICE01_GG(或其他任何具有近似名称的打印程序和表格)。
# p #您能给我们您的打印程序(在文本文件中)吗?
一周热门 更多>