`
evangxli
  • 浏览: 231608 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

ALV & SMARTFORMS

阅读更多
(一) Realization:

1. ALV connect smartforms layout
2. Choose column
3. Print Button
4. From ekko & ekpo procure data

(二) 流程
不会上图... 留着吧

看代码实现。



*&---------------------------------------------------------------------*
*& Report  ZT_XLI_001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZT_XLI_001.

TYPE-POOLS : SLIS.

TABLES : EKKO,
  EKPO.

DATA : C_TABIX LIKE SY-TABIX.
DATA : L_FM_NAME(30) TYPE C.

TYPES : BEGIN OF TY_PURNM,
  PURNM TYPE EKKO-EBELN,
  END OF TY_PURNM.
TYPES : BEGIN OF TY_EKKO,
  PUR_NUM  TYPE EKKO-EBELN,
  CRT_DATE TYPE EKKO-AEDAT,
  VEND_NUM TYPE EKKO-LIFNR,
  PAY_KEY  TYPE EKKO-ZTERM,
  END OF TY_EKKO.
TYPES : BEGIN OF TY_EKPO,
  PUR_NO   TYPE EKPO-EBELN,
  MAT_NUM  TYPE EKPO-MATNR,
  PUR_TXT  TYPE EKPO-TXZ01,
  PLT_NUM  TYPE EKPO-WERKS,
  STOR_LOC TYPE EKPO-LGORT,
  END OF TY_EKPO.

TYPES : BEGIN OF TY_DATA,
  SEL      TYPE SEL,
  PUR_NUM  TYPE EKKO-EBELN,
  CRT_DATE TYPE EKKO-AEDAT,
  VEND_NUM TYPE EKKO-LIFNR,
  PAY_KEY  TYPE EKKO-ZTERM,
  MAT_NUM  TYPE EKPO-MATNR,
  PUR_TXT  TYPE EKPO-TXZ01,
  PLT_NUM  TYPE EKPO-WERKS,
  STOR_LOC TYPE EKPO-LGORT,
  END OF TY_DATA.

TYPES : BEGIN OF TY_SELS,
  PUR_NUM  TYPE EKKO-EBELN,
  CRT_DATE TYPE EKKO-AEDAT,
  VEND_NUM TYPE EKKO-LIFNR,
  PAY_KEY  TYPE EKKO-ZTERM,
  MAT_NUM  TYPE EKPO-MATNR,
  PUR_TXT  TYPE EKPO-TXZ01,
  PLT_NUM  TYPE EKPO-WERKS,
  STOR_LOC TYPE EKPO-LGORT,
  END OF TY_SELS.

DATA : IT_PURNM TYPE STANDARD TABLE OF TY_PURNM WITH HEADER LINE.

DATA : WA_EKKO TYPE TY_EKKO.
DATA : IT_EKKO TYPE STANDARD TABLE OF TY_EKKO WITH HEADER LINE.

DATA : WA_EKPO TYPE TY_EKPO.
DATA : IT_EKPO TYPE STANDARD TABLE OF TY_EKPO WITH HEADER LINE.

DATA : WA_DATA TYPE TY_DATA.
DATA : CT_DATA TYPE STANDARD TABLE OF TY_DATA WITH HEADER LINE.
DATA : IT_DATA TYPE STANDARD TABLE OF TY_DATA WITH HEADER LINE.

DATA : WA_SELS TYPE TY_SELS.
DATA : IT_SELS TYPE STANDARD TABLE OF TY_SELS WITH HEADER LINE.

DATA : I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
DATA : I_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA : WA_REPID LIKE SY-REPID.


SELECTION-SCREEN BEGIN OF BLOCK BLK1.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (20) TEXT-A01.
SELECT-OPTIONS : S_PURNUM FOR EKKO-EBELN OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK BLK1.


START-OF-SELECTION.
  PERFORM GET_EKKO_EKPO.
  PERFORM GETDATA.
  PERFORM CATALOG.
  PERFORM ALVSHOW.

*&---------------------------------------------------------------------*
*&      Form  GET_EKKO_EKPO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_EKKO_EKPO.
  IF S_PURNUM IS NOT INITIAL.
    SELECT EBELN
      FROM EKKO INTO TABLE IT_PURNM
      WHERE EKKO~EBELN IN S_PURNUM.

    SELECT EBELN AEDAT LIFNR ZTERM
      FROM EKKO INTO TABLE IT_EKKO
      WHERE EKKO~EBELN IN S_PURNUM.
    SELECT EBELN MATNR TXZ01 WERKS LGORT
      FROM EKPO INTO TABLE IT_EKPO
      WHERE EKPO~EBELN IN S_PURNUM.
    DELETE IT_EKPO WHERE MAT_NUM = SPACE.
  ENDIF.
ENDFORM.                    "GET_EKKO_EKPO

*&---------------------------------------------------------------------*
*&      Form  GETDATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GETDATA.
  LOOP AT IT_EKKO INTO WA_EKKO WHERE PUR_NUM <> SPACE.
    LOOP AT IT_EKPO INTO WA_EKPO WHERE PUR_NO = WA_EKKO-PUR_NUM.
      WA_DATA-PUR_NUM  = WA_EKKO-PUR_NUM.
      WA_DATA-CRT_DATE = WA_EKKO-CRT_DATE.
      WA_DATA-VEND_NUM = WA_EKKO-VEND_NUM.
      WA_DATA-PAY_KEY  = WA_EKKO-PAY_KEY.
      WA_DATA-MAT_NUM  = WA_EKPO-MAT_NUM.
      WA_DATA-PUR_TXT  = WA_EKPO-PUR_TXT.
      WA_DATA-PLT_NUM  = WA_EKPO-PLT_NUM.
      WA_DATA-STOR_LOC = WA_EKPO-STOR_LOC.
      APPEND WA_DATA TO IT_DATA.
    ENDLOOP.
  ENDLOOP.

ENDFORM.                    "GETDATA

*&---------------------------------------------------------------------*
*&      Form  CATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM CATALOG.
  WA_REPID = SY-REPID.
  CLEAR I_FIELDCAT.

  DEFINE MAC_SET.
    I_FIELDCAT-REF_TABNAME = 'IT_DATA'.
    I_FIELDCAT-FIELDNAME   = &1.
    I_FIELDCAT-SELTEXT_S   = &2.
    I_FIELDCAT-SELTEXT_M   = &2.
    I_FIELDCAT-SELTEXT_S   = &2.
    I_FIELDCAT-COL_POS     = &3.
    I_FIELDCAT-OUTPUTLEN   = &4.
    APPEND I_FIELDCAT.
  END-OF-DEFINITION.
  MAC_SET 'PUR_NUM ' 'Purchase Number' C_TABIX '14'.
  MAC_SET 'CRT_DATE' 'Created Date'    C_TABIX '11'.
  MAC_SET 'VEND_NUM' 'Vendor Number'   C_TABIX '13'.
  MAC_SET 'PAY_KEY ' 'Payment Key'     C_TABIX '10'.
  MAC_SET 'MAT_NUM ' 'Material Number' C_TABIX '14'.
  MAC_SET 'PUR_TXT ' 'Short Text'      C_TABIX '20'.
  MAC_SET 'PLT_NUM ' 'Plant'           C_TABIX '4'.
  MAC_SET 'STOR_LOC' 'Location'        C_TABIX '6'.
*  I_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  I_LAYOUT-BOX_FIELDNAME = 'SEL'.
ENDFORM.                    "CATALOG

*&---------------------------------------------------------------------*
*&      Form  ALVSHOW
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM ALVSHOW.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PF_STATUS_SET = 'FM_SET_STATUS'
      I_CALLBACK_USER_COMMAND  = 'FM_USER_COMMAND'
      I_CALLBACK_PROGRAM       = WA_REPID
      IS_LAYOUT                = I_LAYOUT
      I_GRID_TITLE             = 'PURCHASE LIST'
      IT_FIELDCAT              = I_FIELDCAT[]
    TABLES
      T_OUTTAB                 = IT_DATA
    EXCEPTIONS
      PROGRAM_ERROR            = 1
      OTHERS                   = 2.
  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.                    "ALVSHOW


*&---------------------------------------------------------------------*
*&      Form  FM_SET_STATUS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->EXTAB      text
*----------------------------------------------------------------------*
FORM FM_SET_STATUS USING EXTAB TYPE SLIS_T_EXTAB.
  SET PF-STATUS 'BUTTON' .
ENDFORM.                    "FM_SET_STATUS

*&---------------------------------------------------------------------*
*&      Form  FM_USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM FM_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
      RS_SELFIELD TYPE SLIS_SELFIELD.
  CASE R_UCOMM.
    WHEN 'PRINT'.
      PERFORM FM_BUTTON_PRT.
    WHEN OTHERS.
  ENDCASE.
ENDFORM.                    "FM_USER_COMMAND

*&---------------------------------------------------------------------*
*&      Form  FM_BUTTON_PRT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM FM_BUTTON_PRT.
  LOOP AT IT_DATA INTO WA_DATA.
    IF WA_DATA-SEL = 'X'.
      WA_SELS-PUR_NUM  = WA_DATA-PUR_NUM.
      WA_SELS-CRT_DATE = WA_DATA-CRT_DATE.
      WA_SELS-VEND_NUM = WA_DATA-VEND_NUM.
      WA_SELS-PAY_KEY  = WA_DATA-PAY_KEY .
      WA_SELS-MAT_NUM  = WA_DATA-MAT_NUM .
      WA_SELS-PUR_TXT  = WA_DATA-PUR_TXT .
      WA_SELS-PLT_NUM  = WA_DATA-PLT_NUM .
      WA_SELS-STOR_LOC = WA_DATA-STOR_LOC.
      APPEND WA_SELS TO IT_SELS.
    ENDIF.
  ENDLOOP.
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      FORMNAME           = 'ZXLI_TEST_003'
    IMPORTING
      FM_NAME            = L_FM_NAME
    EXCEPTIONS
      NO_FORM            = 1
      NO_FUNCTION_MODULE = 2
      OTHERS             = 3.
  CALL FUNCTION L_FM_NAME
    TABLES
      IT_DATA = IT_SELS.
*  CLEAR IT_SELS[].
ENDFORM.                    "FM_BUTTON_PRT
分享到:
评论

相关推荐

    ALV & SMARTFORMS 并分页

    在SAP ABAP开发中,ALV(Accelerated List Viewer)和SMARTFORMS是两种用于数据展示和报表生成的重要工具。本篇文章将深入探讨这两者,并结合“分页”这一功能,来阐述如何在实际应用中高效地处理大量数据。 ALV是...

    ALV和SMARTFORMS实例

    在SAP ABAP编程中,ALV(ABAP List Viewer)和SMARTFORMS是两种用于数据展示和报表生成的重要工具。本实例将详细介绍如何利用ALV进行数据展示,并结合SMARTFORMS实现数据打印。 首先,ALV是SAP提供的一种标准的列表...

    SMARTFORMS使用自定义的表结构

    最后,还可以定义自定义工具条并将其绑定到ALV控件中,以增强用户的交互体验。 #### 总结 通过以上步骤,我们可以看到如何在SMARTFORMS中使用自定义的表结构来实现更灵活的数据展示。这种方式不仅提高了开发效率...

    SAP-SMARTFORMS-凭证连续打印设置操作之三.doc

    SAP SMARTFORMS 凭证连续打印设置操作之三 本文档介绍了如何在 SAP 系统中实现凭证连续打印设置操作,使用 SMARTFORMS FORM 来实现自动分页打印处理。该操作可以将凭证号从 100 连续打印到 120,系统自动在打印时按...

    SAP例1(个人)123456

    "SAP SMARTFORMS 和 ALV 报表输出" SAP SMARTFORMS 是一种高级的报表输出工具,可以用来生成复杂的报表输出。本案例将展示如何使用 SAP SMARTFORMS 和 ALV 报表来生成采购订单信息报表,并实现打印输出功能。 标题...

    ABAP面试大全

    - **FM ALV与OO ALV比较**:FM ALV基于函数模块,而OO ALV使用面向对象的CL_GUI_ALV_GRID类,后者提供更灵活的定制能力。 2. **数据库知识** - **数据字典对象**:包括表、域、数据元素、结构、视图等,是SAP数据...

    abap trianing

    7. 打印和导出:利用SMARTFORMS或PDF Export功能创建专业格式的文档。 总的来说,"ABAP Training"涵盖了SAP开发的基础,包括与用户交互的Dialog Programs和数据展示的ALV技术,这些都是构建高效SAP应用的关键技能。...

    ABAP面试大全.doc

    常见的报表事件有报表选择画面、ALV 报表实现的流程、显示 ALV 常用的两个 FM(Function Module)、设置 ALV 中的热键、ALV 显示中的小计等。报表事件的处理是 ABAP 中一个重要的知识点。 ABAP 基础知识 ABAP 基础...

    ABAP培训讲义

    介绍SAP的编程语言ABAP以及ABAP工作台 介绍数据字典、内表、基本报表程序的编写 介绍报表开发技术 ALV 介绍表单开发技术 SMARTFORMS

    实战sap程序开发

    SMARTFORMS生成的表单可以用于打印或电子输出,广泛应用于发票、订单、报告等场景。 3. SCREEN:在SAP系统中,SCREEN编程主要用于用户界面的设计。开发者可以通过定义屏幕区域、输入字段、按钮等元素,创建交互式的...

    SAP开发培训资料(包含代码)

    通过使用ALV,开发者可以快速创建交互式表格,支持排序、过滤、分组等功能。学会创建和自定义ALV报表,对于展示和分析大量业务数据至关重要。 4. 屏幕设计: SAP GUI界面中的屏幕是由ABAP程序员设计的,通过使用...

    1.ABAP程序范例和代码片段.zip

    4. **Smartforms详解.docx**:Smartforms是SAP提供的一种用于创建复杂打印格式的工具,它可以生成高度格式化的输出,如发票、报告等。文档可能包含了Smartforms的结构、控件使用、逻辑处理等方面的详细讲解。 5. **...

    abap实例教材pdf文档,最清晰的版本

    本教程是一份详细的ABAP实例教材,包含多个关键领域的深入讲解,如SMARTFORMS、BDC(Batch Data Communication)以及REPORT编写等。以下是各章节内容的详细解析: 第一章至第二章:基础入门 尽管这部分内容未直接列...

    ABAP读数据

    4. **使用Open SQL和Database Procedures**:ABAP提供了一些预定义的数据库过程,如`CALL METHOD OF cl_salv_table 'GET_DATA'`,这可以用于填充一个SMARTFORMS或ALV(ABAP List Viewer)表格。 5. **使用DB_TABLES...

    SAP ABAP技术总结

    13. 高级应用:在文档中,还涉及了一些高级应用如ABAP断点调试、IDoc处理、SmartForms&ScriptForms、搜索帮助Search Help(F4)等,这些技术能够提升ABAP程序的调试效率、数据交换能力和用户交互体验。 以上内容仅...

    ABAP常用开发技术讲义[整理].pdf

    开发工具为SE38、SMARTFORMS。 5. QUERY报表:QUERY报表适用于简单的查询报表开发,无需具有ABAP编程知识,但又提供了写ABAP代码的功能,对于一些简单的、无太多计算逻辑或判断逻辑的报表,推荐用其开发。开发工具...

    SAP ABAP培训PPT

    SmartForms 表单开发是 ABAP 语言中的一个重要概念,用于开发基于表单的应用程序。了解 SmartForms 表单开发是开发高效的应用程序的关键。 SAP QUERY 开发 SAP QUERY 开发是 ABAP 语言中的一个重要概念,用于开发...

    18种根据屏幕字段找数据表的方法(中文)

    11. **ALV报表**:对于使用ALV(ABAP List Viewer)的屏幕,ALV的内部表可能直接或间接与数据表关联。 12. **BADI和增强**:检查业务添加接口(BADI)和增强,它们可能修改了屏幕字段的处理逻辑并引入了新的数据表...

Global site tag (gtag.js) - Google Analytics