你不知道的SAP屏幕的一些事

写在前面:

主流和常用的屏幕知识,去百度或者Bing都能找到,我就不在自己的公众号里发了。

总结之前用过的一些较偏门的屏幕技术时,写了个DEMO,包括:

1、选择屏幕中嵌套其他屏幕(嵌套选择屏幕、嵌套自画屏幕)

2、自画屏幕中嵌套选择屏幕

3、在一个弹出窗口中,Write一段文字

算是给ABAP的爱好者,丰富一下知识吧。

如果你是一个在意用户体验的ABAPer,你总能为上面的每个例子找到适合的使用场景。

以下是DEMO内容的介绍。

(1/8)程序类型


REPORT

需要自己画的屏幕:2100、9000、3000

GUI状态包括S3000、S9000

(2/8)屏幕2100


子屏幕,逻辑流为空,屏幕元素如下

(3/8)屏幕9000


正常屏幕,逻辑流如下

PROCESS BEFORE OUTPUT.
  MODULE status_9000.
  CALL SUBSCREEN subscr INCLUDING sy-repid '9100'.

PROCESS AFTER INPUT.
  CALL SUBSCREEN subscr.
  MODULE user_command_9000. 

屏幕元素如下

(4/8)屏幕3000


普通屏幕,逻辑流如下

PROCESS BEFORE OUTPUT.
  MODULE status_3000.
PROCESS AFTER INPUT. 

屏幕元素为空

(5/8)GUI状态S3000


对话框类型,功能码包括CLOSE

(6/8)GUI状态S9000


默认类型,功能码包括BACK

(7/8)程序代码

REPORT zsl_test_screen NO STANDARD PAGE HEADING.

TABLES: makt, sscrfields.

PARAMETERS: p_rb1 TYPE c RADIOBUTTON GROUP p01 DEFAULT 'X'.
PARAMETERS: p_rb2 TYPE c RADIOBUTTON GROUP p01.
PARAMETERS: p_rb3 TYPE c RADIOBUTTON GROUP p01.

SELECTION-SCREEN BEGIN OF SCREEN 2000.
SELECTION-SCREEN COMMENT /1(70) s2000_t1.
SELECTION-SCREEN BEGIN OF TABBED BLOCK block FOR 10 LINES.
SELECTION-SCREEN TAB (20) tab1 USER-COMMAND tab1.
SELECTION-SCREEN TAB (20) tab2 USER-COMMAND tab2.
SELECTION-SCREEN END OF BLOCK block.
SELECTION-SCREEN END OF SCREEN 2000.

SELECTION-SCREEN BEGIN OF SCREEN 9100 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK 001 WITH FRAME.
SELECTION-SCREEN COMMENT /1(70) s9100_t1.
SELECT-OPTIONS: s_maktg FOR makt-maktg.
SELECTION-SCREEN END OF BLOCK 001.
SELECTION-SCREEN END OF SCREEN 9100.

INITIALIZATION.
  %_p_rb1_%_app_%-text = '选择屏幕中嵌套其他屏幕'.
  %_p_rb2_%_app_%-text = '自画屏幕中嵌套选择屏幕'.
  %_p_rb3_%_app_%-text = '在一个弹出窗口中,Write一段文字'.
  %_s_maktg_%_app_%-text = '物料描述'.
  s2000_t1 = '这是一个选择屏幕'.
  s9100_t1 = '这是一个选择屏幕'.
  tab1 = 'TAB1'.
  tab2 = 'TAB2'.
  block-prog = sy-repid.
  block-dynnr = '2100'.
  block-activetab = 'TAB1'.

AT SELECTION-SCREEN.
  IF sy-dynnr = '2000'.
    CASE sscrfields-ucomm.
      WHEN 'TAB1'.
        block-dynnr = '2100'.
      WHEN 'TAB2'.
        block-dynnr = '9100'.
    ENDCASE.
  ENDIF.

AT USER-COMMAND.
  IF sy-ucomm = 'CLOSE'.
    LEAVE TO SCREEN 0.
  ENDIF.

START-OF-SELECTION.
  CASE 'X'.
    WHEN p_rb1.
      CALL SELECTION-SCREEN 2000.
    WHEN p_rb2.
      CALL SCREEN 9000.
    WHEN p_rb3.
      CALL SCREEN 3000 STARTING AT 10 1 ENDING AT 120 20.
  ENDCASE.

MODULE user_command_9000 INPUT.
  CASE sy-ucomm.
    WHEN 'BACK'.
      LEAVE TO SCREEN 0.
  ENDCASE.
ENDMODULE.
MODULE status_9000 OUTPUT.
  SET PF-STATUS 'S9000'.
ENDMODULE.
MODULE status_3000 OUTPUT.
  SET PF-STATUS 'S3000'.
  LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 3000.

  SKIP 1.
  WRITE: '在一个弹出窗口中,Write一段文字', /.
  ULINE.
  WRITE: '程序使用说明:', /.
  WRITE: '1、...', /.
  WRITE: '2、...', /.
  WRITE: '3、...', /.
  WRITE: '4、...', /.
  WRITE: '5、...', /.

  LEAVE SCREEN.
ENDMODULE. 

(8/8)执行效果


选择屏幕中嵌套自画屏幕

选择屏幕中嵌套选择屏幕

自画屏幕中嵌套选择屏幕

在弹出窗口中Write一段文字


如果你有更多的屏幕使用技巧,欢迎和笔者交流,共同学习成长。微信在下方。


ABAP文章汇总:

https://mp.weixin.qq.com/s/djmMeM0qfDxPPwxbjuJABA

Excel文章汇总:

https://mp.weixin.qq.com/s/NwJ0SzIrn9hVmaCMo-UYyA

网盘永久链接:

https://mp.weixin.qq.com/s/f_WwKZdwM-vPEstTjjz_eQ

关注公众号,点下方菜单打开上面的链接,更方便哦。

笔者微信:286503700(QQ同号)

如果喜欢,谢谢转发。

你可能感兴趣的:(你不知道的SAP屏幕的一些事)