ABAP SFP function

本文介绍了一个 SAP ABAP 系统中用于处理员工档案照片的程序片段。该程序通过调用 SAP 函数模块来获取员工的照片归档信息,并将其转换为可供打印输出的格式。此外,还展示了如何利用 SAP 的归档接口获取归档对象的连接信息及字节数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

*&---------------------------------------------------------------------*
*&      Form  PROCESS_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_TB_INDEX  text
*----------------------------------------------------------------------*

FORM PROCESS_COMMAND  USING    P_TB_INDEX.

 

DATA: IE_OUTPUTPARAM TYPE SFPOUTPUTPARAMS.
      I_NAME         TYPE FPNAME,
      I_FUNCNAME     TYPE FUNCNAME,

      IM_TEXT        TYPE STRING,
      LOGFILEOBJ     TYPE REF TO CL_LSO_LOGFILE.
      SZ_OBJID(50),
      ICOUNT         TYPE SY-INDEX,
      AR_CONNECTIONS TYPE TOAV0 OCCURS 1 WITH HEADER LINE,
      AR_DOCCLASS    TYPE TOADD-DOC_TYPE,
      BINDATA        LIKE TBL1024 OCCURS 0 WITH HEADER LINE,
      SZ_XSTRING     TYPE XSTRING,

      WA_TOA_DARA    TYPE TOA_DARA,

      FP_DOCPARAMS   TYPE SFPDOCPARAMS,
      FP_FORMOUTPUT  TYPE FPFORMOUTPUT,

      IT0023         TYPE TABLE OF ZHRSGRJL_0023 WITH HEADER LINE,
      IT0021         TYPE TABLE OF ZHRSGRJL_0021 WITH HEADER LINE.

 

LOGFILEOBJ = CL_LSO_LOGFILE=>GET_INSTANCE( CL_LSO_LOGFILE=>CO_HANDLE_CP ).

 

READ TABLE Z01 INDEX P_TB_INDEX.

 

PERFORM GET_IT_0023_0021 TABLES IT0023 IT0021.

 

CONCATENATE Z01-PERNR '0002' INTO SZ_OBJID.

 

CALL FUNCTION 'ARCHIV_GET_CONNECTIONS'
 EXPORTING
   OBJECTTYPE               = 'PREL'
   OBJECT_ID                = SZ_OBJID
   CLIENT                   = SY-MANDT
   ARCHIV_ID                = 'A2'
   DOCUMENTTYPE             = 'HRICOLFOTO'
*   UNTIL_AR_DATE            = SY-DATUM
 IMPORTING
   COUNT                    = ICOUNT
 TABLES
   CONNECTIONS              = AR_CONNECTIONS
 EXCEPTIONS
   NOTHING_FOUND            = 1
   OTHERS                   = 2.

IF ICOUNT > 0.
  READ TABLE AR_CONNECTIONS INDEX 1.


  MOVE AR_CONNECTIONS-RESERVE TO AR_DOCCLASS.

 

  CALL FUNCTION 'ARCHIVOBJECT_GET_BYTES'
    EXPORTING
      ARCHIV_ID                      = AR_CONNECTIONS-ARCHIV_ID
      ARCHIV_DOC_ID                  = AR_CONNECTIONS-ARC_DOC_ID
      DOCUMENT_TYPE                  = AR_DOCCLASS
      LENGTH                         = 0
      OFFSET                         = 0
    TABLES
      BINARCHIVOBJECT                = BINDATA
    EXCEPTIONS
      ERROR_ARCHIV                   = 1
      ERROR_COMMUNICATIONTABLE       = 2
      ERROR_KERNEL                   = 3
      OTHERS                         = 4.

  LOOP AT BINDATA.
    CONCATENATE SZ_XSTRING BINDATA-LINE INTO SZ_XSTRING IN BYTE MODE.
  ENDLOOP.

  Z01-MIMETYPE = AR_DOCCLASS.
  Z01-PHOTO = SZ_XSTRING.

ENDIF.

 

IE_OUTPUTPARAM-DEVICE = 'PRINTER'.
IE_OUTPUTPARAM-NODIALOG = 'X'.
*IE_OUTPUTPARAM-DEST = 'ZPDF'.
*IE_OUTPUTPARAM-REQNEW = 'X'.
*IE_OUTPUTPARAM-ARCMODE = 2.

CALL FUNCTION 'FP_JOB_OPEN'
  CHANGING
    IE_OUTPUTPARAMS       = IE_OUTPUTPARAM
  EXCEPTIONS
    CANCEL                = 1
    USAGE_ERROR           = 2
    SYSTEM_ERROR          = 3
    INTERNAL_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.

 

I_NAME = 'ZHRIRESUMEPDF'.


CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
  EXPORTING
    I_NAME                     = I_NAME
  IMPORTING
    E_FUNCNAME                 = I_FUNCNAME
* E_INTERFACE_TYPE =
          .

*wa_toa_dara-mandant = sy-mandt.
*wa_toa_dara-sap_object = 'PREL'.
*wa_toa_dara-ar_object = 'HRIDIPLAPL'.
*concatenate learnerid objid into wa_toa_dara-object_id.
*wa_toa_dara-reserve = 'Commit'.

APPEND WA_TOA_DARA TO FP_DOCPARAMS-DARATAB.

 

CALL FUNCTION I_FUNCNAME
  EXPORTING
    /1BCDWB/DOCPARAMS          = FP_DOCPARAMS
    ZHREMPLOYEEINFO            = Z01
    TBL_PS0023                 = IT0023[]
    TBL_PS0021                 = IT0021[]
  IMPORTING
    /1BCDWB/FORMOUTPUT         = FP_FORMOUTPUT
  EXCEPTIONS
    USAGE_ERROR                = 1
    SYSTEM_ERROR               = 2
    INTERNAL_ERROR             = 3.

IF SY-SUBRC NE 0.
  IM_TEXT = ''.
  CONCATENATE IM_TEXT I_FUNCNAME ',MSGNO:' SY-MSGNO INTO IM_TEXT.
  CALL METHOD LOGFILEOBJ->WRITE_FREE_ENTRY
    EXPORTING
      IM_TEXT      = IM_TEXT
      FUNCTIONNAME = 'ZHRP0051F01'
      IM_MSGTY     = 'E'
      IM_LEVEL     = 3.
ENDIF.

 

CALL FUNCTION 'FP_JOB_CLOSE'
 EXCEPTIONS
   USAGE_ERROR          = 1
   SYSTEM_ERROR         = 2
   INTERNAL_ERROR       = 3
   OTHERS               = 4.

 

ENDFORM.                    " PROCESS_COMMAND   

 

 

 

### 回答1: ABAP调用函数是指在ABAP程序中调用一个函数模块。函数模块是一段可重用的代码,可以在不同的程序中被调用。在ABAP中,可以使用CALL FUNCTION语句来调用函数模块。调用函数模块时,需要指定函数模块的名称和输入参数。函数模块执行完毕后,可以返回输出参数和返回值。ABAP调用函数模块是一种常见的编程技巧,可以提高程序的可重用性和效率。 ### 回答2: 1. 什么是 ABAP Call FunctionABAP Call Function 是一种在 ABAP 程序中调用函数模块的方法。通过这种方法,可以在 ABAP 程序中调用SAP 中的函数模块来实现各种功能,比如数据读取、数据保存、数据更新等。 2. ABAP Call Function 的语法是什么? ABAP Call Function 的语法如下: <脚本语言> CALL FUNCTION <function_name> [DESTINATION <string>] [EXPORTING <parameter>] [IMPORTING <parameter>] [CHANGING <parameter>] [TABLES <parameter>] [EXCEPTIONS <exception>]. 3. ABAP Call Function 中的参数类型有哪些? ABAP Call Function 中的参数类型有: - EXPORTING:用于传递输入参数,传递的是一个单一值(Scalar)或者是一个结构体(Structure) - IMPORTING:用于传递输出参数,传递的是一个单一值(Scalar)或者是一个结构体(Structure) - CHANGING:用于传递双向参数,传递的是一个单一值(Scalar)或者是一个结构体(Structure) - TABLES:用于传递表格参数,传递的是一个内部表格(Internal Table) 4. ABAP Call Function 的执行顺序是什么? ABAP Call Function 的执行顺序如下: 1) 初始化变量; 2) 设置输入参数,进行必要的数据类型转换; 3) 调用函数模块; 4) 从输出参数中获取返回值; 5) 检测异常并进行错误处理; 6) 销毁变量。 5. ABAP Call Function 的优点是什么? - 提高程序的重用性和可维护性; - 减少程序的维护成本; - 减少开发人员对于底层实现的依赖程度; - 提高程序的可靠性。 总之,ABAP Call Function 在 SAP 系统中具有重要的作用,在编写 ABAP 程序时,开发人员需要熟悉 ABAP Call Function 的使用方法,以便在必要时快速、准确地实现所需功能。 ### 回答3: ABAP Call Function 是 SAP 中的一个功能模块,是在 ABAP 程序中调用远程函数的一种常见方式。用户可以直接通过函数调用来获取必要的数据或进行必要的操作,比如在 ABAP 程序中读取/写入数据、调用其他应用程序中的函数等。下面我们将详细介绍 ABAP Call Function 的三个主要部分: 1. 函数调用的头部信息: ABAP Call Function 的头部信息中包含了需要调用的函数名称,以及输入/输出参数的描述。用户需要在程序中先明确需要调用的函数名称,然后通过使用 SAP 的 Function Builder 工具来查看函数的输入/输出参数描述。可以将这些参数描述写入到函数调用的头部信息中,以告诉 SAP 系统如何执行函数调用。 2. 输入/输出参数: 函数调用的输入参数指向 ABAP 程序中的变量或常量。这些参数可以作为函数调用的输入值,在调用结束后也可以作为输出参数返回值。需要注意的是,函数调用的每个输入参数都需要指定相应数据对象的类型以及长度。 函数调用的输出参数被定义为返回变量,也就是调用函数后输出的结果。输出参数的类型和长度也需要与函数调用的函数定义匹配,以确保函数调用后可以得到正确的返回值。 3. 函数调用相关的其他信息: 函数调用还有一些其他的信息,比如错误信息、返回代码等等。在使用 ABAP Call Function 进行函数调用时,需要了解有哪些函数返回的信息是至关重要的,需要在程序中格外关注。 总之,ABAP Call Function 是 SAP 系统中非常重要的一个部分,用户在使用 ABAP 程序中调用需要在 SAP 中运行的函数时,就需要着重考虑如何使用 ABAP Call Function 进行函数调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值