Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

ARNAB ROY

Custom F4 Help in Interactive Adobe Form : Data extracted from database to populate
the DROPDOWN list
Classes Types declared
types:
ty_t_object TYPE STANDARD TABLE OF wdy_key_value
INITIAL SIZE 0 .
Componenet Controller Method:
METHOD populate_position_class .

DATA lo_nd_cn_position TYPE REF TO if_wd_context_node.
DATA lo_node TYPE REF TO if_wd_context_node_info.
DATA lt_value_set TYPE wd_assist->ty_t_object.

* navigate from <CONTEXT> to <CN_POSITION> via lead selection
lo_nd_cn_position = wd_context->get_child_node( name = wd_this-
>wdctx_cn_position ).

* To get the node information
CALL METHOD lo_nd_cn_position->get_node_info
RECEIVING
node_info = lo_node.

wd_assist->get_position_class( IMPORTING ex_position_class = lt_value_set ) .

* To add the value set for Position Class
CALL METHOD lo_node->set_attribute_value_set
EXPORTING
name = `EVGRD`
value_set = lt_value_set.

ENDMETHOD.

Assistance Method: ZCL_CREATE_POSITION
METHOD get_position_class.

TYPES: BEGIN OF lty_t710gt,
evgrd TYPE p_evgrd,
ltext TYPE text30,
END OF lty_t710gt.

DATA: lt_t710gt TYPE STANDARD TABLE OF lty_t710gt,
lw_value TYPE wdy_key_value.

FIELD-SYMBOLS: <lfs_t710gt> TYPE lty_t710gt.

SELECT evgrd
ltext
FROM t710gt
INTO TABLE lt_t710gt
WHERE langu = sy-langu .
ARNAB ROY
IF sy-subrc = 0.
LOOP AT lt_t710gt ASSIGNING <lfs_t710gt>.
lw_value-key = <lfs_t710gt>-evgrd .
lw_value-value = <lfs_t710gt>-ltext .
APPEND lw_value TO ex_position_class.
CLEAR lw_value .
ENDLOOP.
ENDIF.

ENDMETHOD.


Call the component controller method from the VIEWS INIT method.
METHOD wddoinit .
DATA lo_componentcontroller TYPE REF TO ig_componentcontroller.
lo_componentcontroller = wd_this->get_componentcontroller_ctr( ).

lo_componentcontroller->populate_pos_data_dur_hir( ).
lo_componentcontroller->populate_gender( ) .
lo_componentcontroller->populate_obj_loan( ) .
lo_componentcontroller->populate_city( ) .
lo_componentcontroller->populate_country( ) .
lo_componentcontroller->populate_country_of_birth( ).
lo_componentcontroller->populate_place_of_birth( ).
lo_componentcontroller->populate_nationality( ).
lo_componentcontroller->populate_other_nationality( ).
lo_componentcontroller->populate_mother_tongue( ).
lo_componentcontroller->populate_marital_status( ).
lo_componentcontroller->populate_bu( ).
lo_componentcontroller->populate_contract_type( ).
lo_componentcontroller->populate_work_time( ).
lo_componentcontroller->populate_pay_scale_type( ).
lo_componentcontroller->populate_pay_scale_level( ).
lo_componentcontroller->populate_pay_scale_group( ).
lo_componentcontroller->get_next_pernr( ).
lo_componentcontroller->populate_rsn_act( ).
lo_componentcontroller->populate_hr_manager( ).

ENDMETHOD.

ARNAB ROY

Custom F4 Help where DROPDOWN LIST depends on the value selected on
the other DROPDOWN LIST.

Adobe Form Script:
Script to be written on the field FLD1 where the user will select a value.

//Custom Code - Sekhar
//xfa.host.messageBox("value is :"+this.rawValue);
ACTION.rawValue = "JF";
submitToSAP1.execEvent("click");


On selecting a value in FUNCTION field, the Job Family will be automatically
populated.
The SUBMIT event of the adobe form directly calls the SUBMIT event of the
Interactive Form UI element.
METHOD onactionpos_submit .

DATA lo_componentcontroller TYPE REF TO ig_componentcontroller .
lo_componentcontroller = wd_this->get_componentcontroller_ctr( ).

lo_componentcontroller->evaluate_action( ).


ENDMETHOD.

METHOD evaluate_action .

DATA lo_nd_cn_position TYPE REF TO if_wd_context_node.

DATA lo_el_cn_position TYPE REF TO if_wd_context_element.
DATA ls_cn_position TYPE wd_this->element_cn_position.
ARNAB ROY
DATA lv_action TYPE wd_this->element_cn_position-action.
DATA lv_hilfm TYPE wd_this->element_cn_position-hilfm_0002 .
DATA lv_endda TYPE wd_this->element_cn_position-endda.

lo_nd_cn_position = wd_context->get_child_node( name = wd_this-
>wdctx_cn_position ).
lo_el_cn_position = lo_nd_cn_position->get_element( ).

IF lo_el_cn_position IS NOT INITIAL.
lo_el_cn_position-
>get_attribute( EXPORTING name = `ACTION` IMPORTING value = lv_action ).
lo_el_cn_position-
>get_attribute( EXPORTING name = `HILFM_0002` IMPORTING value = lv_hilfm ).

CASE lv_action.
WHEN 'JF'.
wd_this->populate_job_family( ).
WHEN 'RJ'.
wd_this->populate_ref_job( ).
WHEN 'PC' .
wd_this->populate_emp_persg_persk( ).
WHEN 'ED'. " To populate default value for ENDDA
* @TODO handle not set lead selection
IF lv_hilfm EQ '001' . " Permanent
lv_endda = 99991231 .
IF lo_el_cn_position IS BOUND.
* set single attribute
lo_el_cn_position->set_attribute(
name = `ENDDA`
value = lv_endda ).
ENDIF.
ELSE. " Temporary
lv_endda = '' .
IF lo_el_cn_position IS BOUND.
* set single attribute
lo_el_cn_position->set_attribute(
name = `ENDDA`
value = lv_endda ).
ENDIF.
ENDIF.

WHEN OTHERS.
ENDCASE.

ENDIF.

ENDMETHOD.

METHOD populate_job_family .

DATA lo_nd_cn_position TYPE REF TO if_wd_context_node.

DATA lo_el_cn_position TYPE REF TO if_wd_context_element.
DATA ls_cn_position TYPE wd_this->element_cn_position.
DATA lv_f_hrobjid TYPE wd_this->element_cn_position-f_hrobjid.
ARNAB ROY

* Navigate from <CONTEXT> to <CN_POSITION> via lead selection
lo_nd_cn_position = wd_context->get_child_node( name = wd_this-
>wdctx_cn_position ).

* Handle non existant child
IF lo_nd_cn_position IS NOT INITIAL.
* Get element via lead selection
lo_el_cn_position = lo_nd_cn_position->get_element( ).
* Handle not set lead selection
IF lo_el_cn_position IS NOT INITIAL.
* Get single attribute
lo_el_cn_position->get_attribute(
EXPORTING
name = `F_HROBJID`
IMPORTING
value = lv_f_hrobjid ).

IF lv_f_hrobjid IS NOT INITIAL.
DATA lt_cn_job_family TYPE wd_assist->ty_t_object.

wd_assist->get_job_family(
EXPORTING
im_objid = lv_f_hrobjid
IMPORTING
ex_job_family = lt_cn_job_family[] ).


DATA lv_jf_hrobjid TYPE wd_this->element_cn_position-jf_hrobjid.
DATA lo_node_info TYPE REF TO if_wd_context_node_info.

* Navigate from <CONTEXT> to <CN_POSITION> via lead selection
lo_nd_cn_position = wd_context->get_child_node( name = wd_this-
>wdctx_cn_position ).
lo_node_info = lo_nd_cn_position->get_node_info( ).

lo_node_info-
>set_attribute_value_set( name = 'JF_HROBJID' value_set = lt_cn_job_family ).

* Clear Ref Job
DATA lv_rj_hrobjid TYPE wd_this->element_cn_position-rj_hrobjid.

* Navigate from <CONTEXT> to <CN_POSITION> via lead selection
lo_nd_cn_position = wd_context->get_child_node( name = wd_this-
>wdctx_cn_position ).

* Handle non existant child
IF lo_nd_cn_position IS NOT INITIAL.
* Get element via lead selection
lo_el_cn_position = lo_nd_cn_position->get_element( ).
* Handle not set lead selection
IF lo_el_cn_position IS NOT INITIAL.
* Set single attribute
CLEAR lv_rj_hrobjid.
lo_el_cn_position->set_attribute(
name = `RJ_HROBJID`
value = lv_rj_hrobjid ).
ARNAB ROY
ENDIF.
ENDIF.

DATA lt_cn_ref_job TYPE wd_assist->ty_t_object.
REFRESH lt_cn_ref_job[].
lo_node_info-
>set_attribute_value_set( name = `RJ_HROBJID` value_set = lt_cn_ref_job[] ).
ENDIF.
ENDIF.
ENDIF.

ENDMETHOD.
Assistance Class method
METHOD get_job_family.

TYPES: BEGIN OF lty_hrp1001,
objid TYPE hrobjid,
END OF lty_hrp1001.

DATA: lt_hrp1001 TYPE STANDARD TABLE OF lty_hrp1001,
lv_sobid TYPE sobid,
lt_job_family TYPE STANDARD TABLE OF ty_object
INITIAL SIZE 0,
lw_key_value TYPE wdy_key_value.

FIELD-SYMBOLS <lfs_job_family> TYPE ty_object.

MOVE im_objid TO lv_sobid.

SELECT objid
FROM hrp1001
INTO TABLE lt_hrp1001
WHERE plvar EQ '01'
AND endda EQ '99991231'
AND sobid EQ lv_sobid.

IF sy-subrc EQ 0.
SORT lt_hrp1001 BY objid.
DELETE ADJACENT DUPLICATES FROM lt_hrp1001 COMPARING ALL FIELDS.

SELECT objid
stext
FROM hrp1000
INTO TABLE lt_job_family
FOR ALL ENTRIES IN lt_hrp1001
WHERE plvar EQ '01'
AND otype EQ 'JF'
AND objid EQ lt_hrp1001-objid
AND endda EQ '99991231'.

IF sy-subrc EQ 0.
LOOP AT lt_job_family ASSIGNING <lfs_job_family>.
MOVE: <lfs_job_family>-objid to lw_key_value-key,
<lfs_job_family>-stext to lw_key_value-value.
APPEND lw_key_value to ex_job_family.
ARNAB ROY
ENDLOOP.

CLEAR lw_key_value.
APPEND lw_key_value to ex_job_family.
ENDIF.
ENDIF.

ENDMETHOD.

You might also like