云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

免备案CDN_不染毛不易百度云_多少钱

小七 141 0

In most cases, we use variant functions to retrieve desired output value back into the configuration with the help of FUNCTION call from object dependencies.

It is nicely explained in here already by one of our friend.

In this write up, I would like to explain what is PFUNCTION and how it is different from FUNCTION call. I came across with a situation where we need to read all the configuration data and I can not specify the exact inputs for this function. Because the input parameters get changed for each and every product.

New way of calling the function module in object dependency is to simply change the procedure to PFUNCTION instead of calling it as FUNCTION, then we don’t really need to specify any arguments to it. When a function module is called with PFUNCTION, it populates GLOBALS structure which has an instance of the configuration. Using the Instance number we can use any of the function module in CUPR function group. For example, use CUPR_GET_VAL to read any characteristic value from the configuration and use CUPR_SET_VAL to set a value back into the configuration).

The main advantage using PFUNCTION is that we don’t need to specify any arguments (input & output parameters) and instance number will be sent automatically to read the configuration data.

I found this is so helpful in terms of getting and setting data in variant configuration using variant functions.

Let’s see a simple example with a PFUNCTION call for a function module

1. List of characteristics created. VCH_ARKTX will get populated with concatenated text with Material, Length, Width and Thickness.

2. Create Variant function: Transaction code: CU65. Function module ZVF_GLASS is created

and assigned to this variant function.

It does not has any input or output parameters.

Function Module interface

3. Call Variant function from the configuration.

Assign a procedure to the configuration profile and call variant function as shown below.

Procedure: VDP_PFUNCTION

PFUNCTION ZVF_GLASS( )

Material number characteristic is a referenced characteristic for VBAP-MATNR. So material will get populated automatically. Material description will get populated from pfunction call upon providing Length, Width and Thickness.

Variant function will be called and it outputs Item text into the configuration.

FUNCTION zvf_glass. *"———————————————————————- *"*"Local Interface: *"  IMPORTING *"     REFERENCE(GLOBALS) LIKE  CUOV_00 STRUCTURE  CUOV_00 *"  TABLES *"      QUERY STRUCTURE  CUOV_01 *"      MATCH STRUCTURE  CUOV_01 *"  EXCEPTIONS *"      FAIL *"      INTERNAL_ERROR *"———————————————————————- TYPE-POOLS: cudbt. DATA: val          TYPE cudbt_val, lv_length    TYPE char10, lv_width     TYPE char10, lv_thickness TYPE char10, lv_desc      TYPE char30, lv_matnr     TYPE matnr.

* Get Material CALL FUNCTION ‘CUPR_GET_VAL’ EXPORTING instance       = globals–root characteristic = ‘VCH_MATNR’ IMPORTING val            = val EXCEPTIONS not_found      = 01 OTHERS         = 02. IF sy–subrc = 0. lv_matnr = val–atwrt. ENDIF. * Get length CALL FUNCTION ‘CUPR_GET_VAL’ EXPORTING instance       = globals–root characteristic = ‘VCH_LENGTH’ IMPORTING val            = val EXCEPTIONS not_found      = 01 OTHERS         = 02. IF sy–subrc = 0. CALL FUNCTION ‘MC_FLTP_CHAR’ EXPORTING fc_a_fld = val–atflv fc_iva   = ‘X’ fc_nk    = ‘0’ IMPORTING fc_r_fld = lv_length. ENDIF.

* Get Width CALL FUNCTION ‘CUPR_GET_VAL’ EXPORTING instance       = globals–root characteristic = ‘VCH_WIDTH’ IMPORTING val            = val EXCEPTIONS not_found      = 01 OTHERS         = 02. IF sy–subrc = 0. CALL FUNCTION ‘MC_FLTP_CHAR’ EXPORTING fc_a_fld = val–atflv fc_iva   = ‘X’ fc_nk    = ‘0’ IMPORTING fc_r_fld = lv_width. ENDIF.

* Get Thickness CALL FUNCTION ‘CUPR_GET_VAL’ EXPORTING instance       = globals–root characteristic = ‘VCH_THICKNESS’ IMPORTING val            = val EXCEPTIONS not_found      = 01 OTHERS         = 02. IF sy–subrc = 0. CALL FUNCTION ‘MC_FLTP_CHAR’ EXPORTING fc_a_fld = val–atflv fc_iva   = ‘X’ fc_nk    = ‘0’ IMPORTING fc_r_fld = lv_thickness. ENDIF.

***** Populate Product description to Configuration CONDENSE lv_width. CONDENSE lv_length. CONDENSE lv_thickness. CONCATENATE lv_length lv_width lv_thickness INTO lv_desc SEPARATED BY ‘X’. CONCATENATE lv_matnr lv_desc INTO lv_desc SEPARATED BY ‘,’.