Chinaunix首页 | 论坛 | 博客
  • 博客访问: 33278
  • 博文数量: 17
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 190
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 16:20
文章分类
文章存档

2011年(1)

2010年(2)

2009年(3)

2008年(11)

我的朋友

分类:

2008-10-14 10:22:01

1)se71进入后即可创建form
步骤如下:
2)语法命令:
a)引用变量:如引用itab_header-werks,则可  &itab_header-werks&.当form输出时,form将在相应的窗口里显示itab_header-werks的值。
b)引用字符串:直接在form将在相应的窗口里输入常量即可。如输出一个报表的名字“中华人民共和国宪法”的字样,只需要在form的编辑窗口里直接输入该字样。汉字,各种字符,均可直接输入。
c)横线命令:BOX XPOS x_x MM YPOS y_y MM WIDTH v_w MM HEIGHT 0 MM FRAME w_w TW
          即在(x_x,y_y)点开始画一长度为v_w 个单位长的横线,其线宽为w_w个单位
  竖线命令:BOX XPOS x_x MM YPOS x_y MM WIDTH 0 MM HEIGHT v_h MM FRAME w_w TW
          即在(x_x,x_y)点开始画一高度为v_h 个单位长的竖线,其线宽为w_w个单位
3)调用
call function 'OPEN_FORM'
      EXPORTING
            form  = 'YTEST03'
      EXCEPTIONS
            others = 1.
  loop at <内表名>. 
//可以在循环体内添加控制语句来控制window得调用
    call function 'WRITE_FORM'
        EXPORTING
              window = 'HEADERR'
        EXCEPTIONS
              others = 1.   
      call function 'WRITE_FORM'
          EXPORTING
              element = 'ITEM'  "元素
                window  = 'HEADER'
          EXCEPTIONS
                others  = 1.
      call function 'WRITE_FORM'
          EXPORTING
              element = 'FOOTER'  "元素
                window  = 'HEADER'
          EXCEPTIONS
                others  = 1.
      call function 'WRITE_FORM'
        EXPORTING
              window = 'FOOTR'
        EXCEPTIONS
              others = 1.
  endloop.
  call function 'CLOSE_FORM'.
""声明 在script form 中,/e也就是"元素"的书写方法为,
  /e:  item
  p1:  jsdaflkjsadlfjlsadf
  /e:  item1
............
主要是调用。   
/: PERFORM
IN PROGRAM
/: USING &INVAR1&
/: USING &INVAR2&
......
/: CHANGING &OUTVAR1&
/: CHANGING &OUTVAR2&
......
/: ENDPERFORM
 
 
例子:
REPORT ZTEST904 .
*定义需要使用的表
***********************************************
TABLES: MSEG,
        MARA,
        MKPF.
*定义一个内部表(带表头)
***********************************************
DATA:   BEGIN OF ITAB OCCURS 0,
            A LIKE MSEG-MBLNR,
            B LIKE MSEG-ZEILE,
        END   OF ITAB.

* 插入一些使用的数据。
***********************************************
DO 30 TIMES.
  ITAB-A = '测试数据'.
  ITAB-B = SY-INDEX.
  APPEND ITAB.
ENDDO.
* 显示画面数据,显示上面的打印按钮。用户点击打印
* 然后调用打印的SCRIPT。显示答应的数据。
***********************************************
* INITIALIZATION
***********************************************
INITIALIZATION.
* AT SELECTION-SCREEN.
***********************************************
AT SELECTION-SCREEN.
* START-OF-SELECTION
***********************************************
START-OF-SELECTION.
SET PF-STATUS 'ZTEST_904'.
PERFORM PRINT_ITAB TABLES ITAB.
* AT USER-COMMAND.
***********************************************
AT USER-COMMAND.
CASE SY-UCOMM.
   WHEN 'USER_PRINT'.
     WRITE:/ 'BUTTON CLIKCKED'.
     PERFORM OPEN_FORM.
       PERFORM START_FORM.
         DO 50 TIMES.
           PERFORM WRITE_FORM USING '' 'MAIN' 'SET'.
         ENDDO.
       PERFORM END_FORM.
     PERFORM CLOSE_FORM.
ENDCASE.
* TOP-OF-PAGE.
***********************************************
TOP-OF-PAGE.
* END-OF-PAGE.
***********************************************
END-OF-PAGE.

*&----------------------------------------------------------------------
*& FORM : PRINT_ITAB
*&----------------------------------------------------------------------
* <处理概要>
*-----------------------------------------------------------------------
* <种别(入出力) <参数名> <类型> <调用类型参照,值>>
*-----------------------------------------------------------------------
* FORM PRINT_ITAB TABLES JTAB LIKE ITAB[].
FORM PRINT_ITAB TABLES JTAB STRUCTURE ITAB.
  LOOP AT JTAB.
    WRITE:/ JTAB-A , 10 JTAB-B.
  ENDLOOP.
ENDFORM.
FORM PRINT_PAGE.
ENDFORM.
FORM OPEN_FORM.
  CALL FUNCTION 'OPEN_FORM'
   EXPORTING
*     APPLICATION                       = 'TX'
*     ARCHIVE_INDEX                     =
*     ARCHIVE_PARAMS                    =
      DEVICE                            = 'PRINTER'
*     DIALOG                            = 'X'
      FORM                              = 'ZTEST904'
      LANGUAGE                          = SY-LANGU
*     OPTIONS                           =
*     MAIL_SENDER                       =
*     MAIL_RECIPIENT                    =
*     MAIL_APPL_OBJECT                  =
*     RAW_DATA_INTERFACE                = '*'
*   IMPORTING
*     LANGUAGE                          =
*     NEW_ARCHIVE_PARAMS                =
*     RESULT                            =
   EXCEPTIONS
     CANCELED                          = 1
     DEVICE                            = 2
     FORM                              = 3
     OPTIONS                           = 4
     UNCLOSED                          = 5
     MAIL_OPTIONS                      = 6
     ARCHIVE_ERROR                     = 7
     INVALID_FAX_NUMBER                = 8
     MORE_PARAMS_NEEDED_IN_BATCH       = 9
     SPOOL_ERROR                       = 10
     OTHERS                            = 11
            .
  IF SY-SUBRC <> 0.
   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.
FORM CLOSE_FORM.
 CALL FUNCTION 'CLOSE_FORM'
*  IMPORTING
*    RESULT                         =
*    RDI_RESULT                     =
*  TABLES
*    OTFDATA                        =
  EXCEPTIONS
    UNOPENED                       = 1
    BAD_PAGEFORMAT_FOR_PRINT       = 2
    SEND_ERROR                     = 3
    SPOOL_ERROR                    = 4
    OTHERS                         = 5
           .
 IF SY-SUBRC <> 0.
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
 ENDIF.
ENDFORM.
FORM START_FORM.
 CALL FUNCTION 'START_FORM'
   EXPORTING
*    ARCHIVE_INDEX          =
     FORM                   = 'ZTEST904'
*    LANGUAGE               = ' '
     STARTPAGE              = 'FRIST'
*    PROGRAM                = ''
*    MAIL_APPL_OBJECT       =
*  IMPORTING
*    LANGUAGE               =
  EXCEPTIONS
    FORM                   = 1
    FORMAT                 = 2
    UNENDED                = 3
    UNOPENED               = 4
    UNUSED                 = 5
    SPOOL_ERROR            = 6
    OTHERS                 = 7
           .
 IF SY-SUBRC <> 0.
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
 ENDIF.
ENDFORM.
FORM END_FORM.
 CALL FUNCTION 'END_FORM'
*  IMPORTING
*    RESULT                         =
  EXCEPTIONS
    UNOPENED                       = 1
    BAD_PAGEFORMAT_FOR_PRINT       = 2
    SPOOL_ERROR                    = 3
    OTHERS                         = 4
           .
 IF SY-SUBRC <> 0.
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
 ENDIF.
ENDFORM.
FORM WRITE_FORM USING ELE WIN FUNC.
 CALL FUNCTION 'WRITE_FORM'
  EXPORTING
     ELEMENT                        = ELE
     FUNCTION                       = FUNC
*    TYPE                           = 'BODY'
     WINDOW                         = WIN
*  IMPORTING
*    PENDING_LINES                  =
   EXCEPTIONS
    ELEMENT                        = 1
    FUNCTION                       = 2
    TYPE                           = 3
    UNOPENED                       = 4
    UNSTARTED                      = 5
    WINDOW                         = 6
    BAD_PAGEFORMAT_FOR_PRINT       = 7
    SPOOL_ERROR                    = 8
    OTHERS                         = 9
           .
 IF SY-SUBRC <> 0.
   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
 ENDIF.
ENDFORM.
阅读(3397) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

makeqiang12009-07-21 14:54:30

你好啊。我是一个大学生。现在初学ABAP,有向您请教的地方。希望您可以加我。QQ:825766886.mail:mayongqiang_2008@yahoo.cn