我确实创建了一个ABAP报告来打印一些ZPL,这很好。现在我的目标是将这个逻辑转换成一个FM,以便能够在我想要的任何地方调用它。问题是,这样做会导致我的SAPGUI锁住自己大约10分钟,并向我显示一条消息:“滚动区域是小的”。
为了打印ZPL,我使用了以下指南:
这是我测试过的最简化的代码:
call function 'GET_PRINT_PARAMETERS'
exporting
destination = 'WA06'
copies = 1
list_name = 'TEST'
list_text = 'Test NEW-PAGE PRINT ON'
immediately = 'X'
release = ' '
new_list_id = 'X'
expiration = 2
layout = 'G_RAW'
sap_cover_page = 'X'
receiver = sy-uname
department = 'System'
no_dialog = abap_false
line_count = 60
importing
out_parameters = params
valid = valid.
if valid <> space.
new-page print on parameters params no dialog.
format color off intensified off.
print-control function 'BCPFX'.
write: / ' :NEW-PAGE'.
write: / ' ^XA ' .
write: / ' ^FO040,040^A0N,40,40^FDHello World^FS '.
write: / ' ^XZ ' .
write: / ' ^FX End of Job'.
endif.
它基本上只是调用GET_PRINT_PARAMETERS,做一些打印机控制伏都教,然后写行。当我从SE38报告中执行它时,这是非常好的。但是,绝对没有什么比向我展示打印机设置窗口并输入它更好。它只运行了大约10分钟,然后向我显示滚动区域太小的错误,这只是消失了,只要我尝试点击F1寻求帮助。
我在一定程度上调试了FM,这样我就明白了,问题不在我的程序中,而是在周围的SFCS_FA_TEST_FUNCTION
FM中,或者更准确地说,死锁在执行SFCS_FA_OUTPUT_LIST
时发生在第271行,因此从第48行开始进行检查。
* Und dann das Ganze ausgeben
IF rseumod-fbalv_grid = space.
CALL SCREEN 500.
ELSE.
CALL SCREEN 800. " ec: ALV-Darstellung
ENDIF.
在这里,呼叫屏幕500被一遍又一遍地呼叫。
有没有人经历过同样的问题,并能帮助我解决它?
发布于 2022-07-20 06:38:14
问题似乎是SE37环境。我试着用FM写打印机的事实。如果我从一个正常的报告中调用FM,那么所有的结果都与预期的一样。
https://stackoverflow.com/questions/72893874
复制相似问题