ALV报表弹窗显示远程图片

效果如下:

image.png

实现:

ZREPORT_DEMO

*&---------------------------------------------------------------------*
*& Report  ZREPORT_DEMO
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT  ZREPORT_DEMO.

INCLUDE ZREPORT_DEMO_T01.

INCLUDE ZREPORT_DEMO_F01.

START-OF-SELECTION.

  PERFORM GET_ALV_DATA."数据处理

  PERFORM FIELD_OUTPUT."调用屏幕显示字段方法

END-OF-SELECTION.

  PERFORM DATA_OUTPUT."调用屏幕输出设置方法

ZREPORT_DEMO_T01

*&---------------------------------------------------------------------*
*&  包括                ZREPORT_DEMO_T01
*&---------------------------------------------------------------------*
TABLES:EBAN.
TYPE-POOLS:SLIS.

TYPES:BEGIN OF TY_TAB,
BANFN    TYPE EBAN-BANFN,
EBAKZ    TYPE EBAN-EBAKZ,
MATNR    TYPE EBAN-MATNR,
TXZ01    TYPE EBAN-TXZ01,
MEINS TYPE MEINS,
END OF TY_TAB.

DATA:GT_TAB  TYPE TABLE OF TY_TAB,
     GW_TAB  TYPE TY_TAB."创建一个参照TY_TAB的全局工作区

FIELD-SYMBOLS <FS_TAB> TYPE TY_TAB.

" 引入宏方式添加屏幕显示字段
DEFINE   ADD_FIELD.
  WA_FIELD-FIELDNAME      = &1.
  WA_FIELD-COLTEXT        = &2.
*  WA_FIELD-EDIT           = &3. "设置可编辑
*  WA_FIELD-CHECKBOX       = &4. "设置是否选择框
  APPEND WA_FIELD TO IT_FIELD.
END-OF-DEFINITION.

" 声明屏幕显示字段需要的变量
DATA: IT_FIELD TYPE LVC_T_FCAT,
      WA_FIELD TYPE LVC_S_FCAT,
      STYLELIN TYPE LVC_S_STYL.

*-----------------------
*选择屏幕
*-----------------------
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:S_WERKS FOR EBAN-WERKS,
               S_MATNR FOR EBAN-MATNR,
               S_BANFN FOR EBAN-BANFN,
               S_AFNAM FOR EBAN-AFNAM NO INTERVALS,
               S_BADAT FOR EBAN-BADAT.
SELECTION-SCREEN: END OF BLOCK B1.

PARAMETERS P_RFQ AS CHECKBOX. "CHECKBOX

ZREPORT_DEMO_F01

*&---------------------------------------------------------------------*
*&  包括                ZREPORT_DEMO_F01
*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*&      Form  GET_ALV_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_ALV_DATA .
  SELECT "DISTINCT
       EBAN~BANFN
       EBAN~EBAKZ
       EBAN~MATNR
       EBAN~TXZ01

      FROM EBAN

    LEFT JOIN EKET ON EKET~BANFN EQ EBAN~BANFN
                  AND EKET~BNFPO EQ EBAN~BNFPO


    LEFT JOIN T001W ON T001W~WERKS EQ EBAN~WERKS
    UP TO 100 ROWS
    INTO CORRESPONDING FIELDS OF TABLE GT_TAB
    WHERE EBAN~WERKS IN S_WERKS
      AND EBAN~MATNR IN S_MATNR
      AND EBAN~BANFN IN S_BANFN
      AND EBAN~AFNAM IN S_AFNAM
      AND EBAN~BADAT IN S_BADAT.

  IF SY-SUBRC EQ 0.

    LOOP AT GT_TAB ASSIGNING <FS_TAB>.

      CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
        EXPORTING
          INPUT  = <FS_TAB>-MEINS
*         LANGUAGE             = SY-LANGU
        IMPORTING
*         LONG_TEXT            =
          OUTPUT = <FS_TAB>-MEINS
*         SHORT_TEXT           =
       EXCEPTIONS
         UNIT_NOT_FOUND       = 1
         OTHERS = 2
        .
      IF SY-SUBRC <> 0.
* Implement suitable error handling here
      ENDIF.

    ENDLOOP.
  ENDIF.
ENDFORM.                    " GET_ALV_DATA

*&---------------------------------------------------------------------*
*&      Form  FIELD_OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM FIELD_OUTPUT.
  CLEAR:WA_FIELD,IT_FIELD.

  ADD_FIELD   'BANFN'  '采购申请'.
  ADD_FIELD   'BNFPO'  '申请申请行项'.
  ADD_FIELD   'EBAKZ'  '关闭状态'.
  ADD_FIELD   'BADAT'  '申请日期'.
  ADD_FIELD   'AFNAM'  '申请者'.

ENDFORM.                    "FIELD_OUTPUT

*&---------------------------------------------------------------------*
*&      Form  DATA_OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM DATA_OUTPUT.
  "定义ALV输入时宽度自动适应
  DATA: WA_LAYOUT TYPE LVC_S_LAYO. "设置输出格式,自适应等
  WA_LAYOUT-CWIDTH_OPT = 'X'.    "设置宽度自适应

  WA_LAYOUT-CWIDTH_OPT = 'X'.    "设置宽度自适应

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' " 调用函数
    EXPORTING
      IT_FIELDCAT_LVC          = IT_FIELD
      IS_LAYOUT_LVC            = WA_LAYOUT  " 设置表单格式
      I_CALLBACK_PROGRAM       = SY-REPID
*      I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
      I_CALLBACK_USER_COMMAND  = 'FRM_USER_COMMAND'
      I_SAVE                   = 'U'
    TABLES
      T_OUTTAB                 = GT_TAB
    EXCEPTIONS
      PROGRAM_ERROR            = 1
      OTHERS                   = 2.

ENDFORM.                    "DATA_OUTPUT

*&---------------------------------------------------------------------*
*&      Form  PF_STATUS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->RT_EXTAB   text
*----------------------------------------------------------------------*
FORM PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
  SET PF-STATUS 'STATUS'.
ENDFORM.                    "PF_STATUS


*&---------------------------------------------------------------------*
*& Form FRM_USER_COMMAND
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM"屏幕流
                       RS_SELFIELD TYPE SLIS_SELFIELD.

  CALL SCREEN 0100 STARTING AT 80 1.

ENDFORM.                    "FRM_USER_COMMAND
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS 'ZSTATUS_100'.

  SET TITLEBAR '远程图片查看'.

  DATA: CTL_PIC01    TYPE SCRFNAME VALUE 'CTL_PIC01',  "定义屏幕控件同名变量,custome control区域
        GO_CTN_PIC01 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,   "用于联接屏幕控件和图片的对象
        GO_CGI_PIC01 TYPE REF TO CL_GUI_PICTURE.            "图片对象

  DATA: GV_URL01 TYPE CNDP_URL VALUE 'http://cn.bing.com//th?id=OHR.SmileySloth_ZH-CN5943980097_1920x1080.jpg&rf=LaDigue_1920x1080.jpg',

*DATA: GV_URL01    TYPE CNDP_URL VALUE 'ftp://way:way@192.168.150.50:21/logo.jpg',

        GV_RETURN02 TYPE I.

  CREATE OBJECT GO_CTN_PIC01
    EXPORTING
      CONTAINER_NAME = CTL_PIC01.

  CREATE OBJECT GO_CGI_PIC01
    EXPORTING
      PARENT = GO_CTN_PIC01.

  CALL METHOD GO_CGI_PIC01->SET_DISPLAY_MODE
    EXPORTING
      DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_FIT.

  CALL METHOD GO_CGI_PIC01->LOAD_PICTURE_FROM_URL_ASYNC
    EXPORTING
      URL = GV_URL01.
ENDMODULE.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.



  LEAVE TO SCREEN 0.
ENDMODULE.                 " USER_COMMAND_0100  INPUT

image.png

image.png

关键词: ABAP

网友评论

发表评论